1,springboot中mybatis二级缓存
1,配置文件打开二级缓存
mybatis:
configuration:
local-enalbled:true
2,在mapper.xml文件中添加
<catch></catch>
3,实体类序列化
public class Student implements Serializable
总结:
- mybatis默认的session级别一级缓存,由于springboot中默认使用了hikariCP,所以基本没用,需要开启事务才有用。但一级缓存作用域仅限同一sqlSession内,无法感知到其他sqlSession的增删改,所以极易产生脏数据
- 二级缓存可通过cache-ref让多个mapper.xml共享同一namespace,从而实现缓存共享,但多表联查时配置略微繁琐。
所以生产环境建议将一级缓存设置为statment级别(即关闭一级缓存),如果有必要,可以开启二级缓存 - 如果应用是分布式部署,由于二级缓存存储在本地,必然导致查询出脏数据,所以,分布式部署的应用不建议开启。
2,springboot中mybatis使用pageHelper实现分页查询
1,导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2,在application.properties或者application.yml格式配置pagehelper的属性
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
hepagehelper:
lperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
3,在controller层调用
PageHelper.startPage(1,5);
List<CarTable> carTables = service.findallCar()
PageInfo<CarTable> page = new PageInfo<CarTable>(carTables);
网友评论