2019-04-04 Mybatis学习知识点

Posted 东莞-小黄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 延迟加载

  • 延时加载:调用属性时才加载,不调用则不加载
  • 积极延时加载:调用属性时把关联对象也加载,不调用不加载
  • 非积极延时加载:调用关联对象属性时才加载,不调用不加载

以上是关于2019-04-04 Mybatis学习知识点的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis 基础知识

第275天学习打卡(知识点回顾 springboot整合MyBatis操作)

第276天学习打卡(知识点回顾 springboot整合mybatis-plus)

Mybatis学习小记

Mybatis-基本学习(上)

Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis原始Dao开发和mapper代理开发