mybatis

parameterType

1.单个参数基本数据类型(包装类)参数,名称任意,可以省略写parameterType
2.多个基本数据类型可以省略写parameterType

  • @param注解
  • param1,param2/0,1

3.pojo类型
parameterType=包名.pojo,#{属性名} 取值
4.list
parameterType=list,foreach取值

<foreach collection="list" open="(" separator="," close=")" item="value">
   		#{value}
 </foreach>

5.map
parameterType=map,map中则是#{key}
6.数组
使用foreach取值

<foreach collection="array" open="(" separator="," close=")" item="value">
    		#{value}
  </foreach>

TO:如果多个参数不是业务模型中的数据,但是经常要使用,推荐编写TO(Transfer Object)数据传输对象

resultType与resultMap

resultType与resultMap的区别:
实体类与表名不影响映射(实体类名可以随意起)

一、resultType只可以映射实体类属性的简单类型成员变量(八种,对应数据库的列),而resultType还可以映射复杂类型的成员变量(pojo,对应数据库的整张表)
二、resultType的映射关系是自动完成的,实体类属性与表字段映射的差别只能是大小写(下划线,后一个大写),否则不能映射。resultMap的映射是手动指定的,故不存在不能映射的情况。

resultType当有复杂成员变量的时候,它仍然当作普通类型来映射。由于表中根本不存在复杂类型的成员变量名称的字段所以无法完成映射,造成复杂类型结果为null。

所以除了一对一和一对多关联查询,其余可以通过起别名,达到resultType与resultMap均可以使用。

特别的resultType类型HashMap,它把sql查询出来的字段用key-val保存起来,并没有映射到实体类。

@Mapkey当查询结果有多条记录Map<String, Map<String, Object>>使用@Mapkey指定key

foreach

item:集合中元素迭代时的别名,该参数为必选。相当于for(Object i:collections)中的i
index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选

缓存

一级缓存SqlSession级别,二级缓存namespace级别。
一级缓存无法显式关闭。二级缓存默认关闭

  1. 一级缓存
    一级缓存失效的四种情况:
    不同的SqlSession对应不同的一级缓存
    同一个SqlSession但是查询条件不同
    同一个SqlSession两次查询期间执行了任何一次增删改操作
    同一个SqlSession两次查询期间手动清空了缓存
    一级缓存脏数据
    sqlSession1第一次读取数据==>sqlSession2修改数据==>sqlSession1再次读取数据
    sqlSession1得到的是脏数据
  2. 二级缓存
    MyBatis提供二级缓存的接口以及实现,缓存实现要求 POJO实现Serializable接口

二级缓存开关mybatis配置文件xml开关

<settings>
        <setting name="cacheEnabled" value="false"/>
</settings>

二级缓存开关mapper.xml开关

<cache></cache>
  1. sql语句的缓存设置
    select标签的useCache属性:
  • 配置这个select是否使用二级缓存。一级缓存一直是使用的
    每个增删改标签的flushCache属性:
    – 增删改默认flushCache=true。sql执行以后,会同时清空一级和二级缓存(相当于部分隐式的关闭一级缓存)。查询默认flushCache=false。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值