mybatis知识点总结

mybatis动态sql

参考:https://blog.csdn.net/qq_26496877/article/details/78258317

mybatis调用存储过程

https://blog.csdn.net/sinat_32133675/article/details/78167898

mybatis插件

1、Free Mybatis plugin
  跳转功能。
  逆向生成mapper、类功能。

 

MyBatis提供两种方式处理我们关联对象,嵌套查询和嵌套结果。

1、嵌套查询(发N(关联对象查询)+1条sql解决问题,映射文件Mapper结果的自动封装)

  这种方式相当于发送几条sql,支持懒加载方式,需要的时候才发送sql查询。

<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将积极加载改为消息加载即按需加载 -->
<setting name="aggressiveLazyLoading" value="false"/>

2、嵌套结果(发一条关联sql解决问题,映射文件Mapper结果的手动封装)

  这种方式是一条sql关联查询所有的数据,结果手动封装,无法延迟加载。

参考孤傲苍狼:https://blog.csdn.net/qq924862077/article/details/53992991

 

关联对象查询

  比如A对象 里面有B对象引用,B对象里面有C对象引用,以此类推,通过查询A对象,能得到B、C...的对象吗?

  答案是:可以的,首先要想得到关联对象的属性值,必须返回结果不能用resultType,只能用 resultMap ,所以通过A去查关联B时,B里面返回的结果应为C里面的baseResultMap,这样就可以得到C里面的值。否则如果使用resultType只能得到自己的基本属性,对象属性为null。

参考:https://www.cnblogs.com/xdp-gacl/p/4264440.html

 

mybatis foreach循环使用

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,
实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key。

参考:https://blog.csdn.net/hjh908778/article/details/79034395/

 

mybatis支持association标签嵌套查询

 

mybatis传递参数

  a、多个参数传递使用 @param 注解(一个参数就不用使用注解,多个参数要么使用注解,要么使用数组的方式取值)

  例如:Page<BusinessItemService> page, @Param("bi")BusinessItem businessItem,@Param("storeid")String storeId

  对象参数 使用对象.属性的方式使用。

  参考:https://blog.csdn.net/master_yao/article/details/78658022

  http://www.cnblogs.com/huanggy/p/9326669.html

  b、多个参数可以使用map传递参数,取值时用key取值即可,不需要添加@param注解。

 

1.单个的参数Mybatis不会做特殊处理
#{这里随便写什么都可以} 它都能把这里面的值取到
2.传入对象POJO(普通的java类)
#{对象的属性名称}
3.多个参数。Mybatis会做特殊处理。会把传入的参数自动封装成Map类型
Map 的key值就是从param1...paramN ..
map.put("param1",name)
map.put("param2,id")
@param("name") 可以使用这个注解 来自定义Map封装数据的key值。
4.直接传入Map
5.Collection(集合)类型(List,Set) 、数组。
Mybatis也会做特殊处理,如果是List或者Set 封装到map中
如果是数组:map.put("array",你传入的数组)

 

posted on 2018-11-15 13:22  好好学习,天天睡觉  阅读(71)  评论(0)    收藏  举报