zoukankan      html  css  js  c++  java
  • 2019-04-04 Mybatis学习知识点

    1. 比较#和$的区别

    • #是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
    • 尽量使用#而不是$
    • 当参数表示表名或列名的时候,只能使用$

    2. 多参数时候

    • 配置文件中使用索引#{0}、#{1}代表第几个参数
    • 在接口中使用注解@Param命名,在配置文件中使用注解的命名
    • 接口使用Map类型作为形参,配置文件使用Map的key作为名称

    3. 通过配置节点属性,可以把插入时候自动生成的key set回到对象中;也可以配置子节点在插入操作前执行SQL得到id存放入对象中

    4. 动态SQL:属性内直接使用变量名(单变量使用value)

    • 判断
    <if test="value !=null and value!=''"></if>
    • 选择
    <choose>
        <when test=''></when>    
        <when test=''></when>    
        <otherwise></otherwise>
    </choose>
    • 增加where关键字并格式化条件语句(处理and、or问题)
    <where></where>    
    • 增加set关键字并格式化(处理列后带逗号问题)
    <set></set>
    • 进行增加前缀和删除前后某个字符串
    <trim></trim>
    • 循环(传递的对象是List则能用list,如果为数组,则能用array作为键,如果加了@Param则直接以该值为键)
    <foreach collection=“” item=“” open="(" colse=")" separator=",">
    
    </foreach>
    • SQL片段(需要先定义片段,再在CRUD中使用)
    <sql id=“id1”></sql>
    <include refid="id1"></include>

    5. 逆向工程

    6. 嵌套查询

    • 1对1(1对象中包含对象):在<resultMap>中配置<association>
    • N对1(N对象中包含对象):在<resultMap>中配置<association>
    • 1对N(1对象中包含集合):在<resultMap>中配置<collection column="集合中对象的ID列名">
    • 联合查询(类似1对1):在<resultMap>中配置<association>

    7. 扩展结果集

    8. 构造方法映射

    <resultMap>
        <constructor>
        </constructor>
    </resultMap>

    9. 鉴别器:根据鉴别列返回不同的子类对象

    <resultMap>
        <discriminator>
        </discriminator>
    </resultMap>

    10. 延迟加载

    • 延时加载:调用属性时才加载,不调用则不加载
    • 积极延时加载:调用属性时把关联对象也加载,不调用不加载
    • 非积极延时加载:调用关联对象属性时才加载,不调用不加载
  • 相关阅读:
    light oj 1007
    51nod 1298 圆与三角形
    codeforces 899C Dividing the numbers
    zznu 1996 : 正三角形和圆的爱情
    zznu 2081 : 舰队管理
    zzun 2076 : 三花聚顶神功
    zznu 2054 : 油田
    机械设备--第九届省赛--深搜
    设计模式-单例模式、工厂模式
    Spring Boot 遇到空指针
  • 原文地址:https://www.cnblogs.com/WongHugh/p/10656735.html
Copyright © 2011-2022 走看看