一、简介
Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制。
二、三级缓存
一级缓存指的是Session缓存。二级缓存指的是Mapper级的缓。三级缓存则是全局的,对所有的mapper有效的缓存。
1、一级缓存
一级缓存是默认开启的, 需要开启事务(例@Transactional)。不加事务每次查询都会创建SqlSession。
当执行增删改方法时会清除缓存。
在同一个SqlSession中 两次相同条件查询中,第一次查询后,然后手动修改表数据或者另一个SqlSession对象修改了数据库或者分布式情况下数据发生了修改,那么第二次查询是直接走缓存,查询结果依旧相同,会存在数据不一致问题。
2、二级缓存
手动开启
Mapper 接口,在接口上添加 @CacheNamespace 注解开启二级缓存;
application.properties 中配置 mybatis-plus.configuration.cache-enabled=true
3、三级缓存
Mybatis 的一级缓存与二级缓存 只适用于单体项目,在分布式服务或者微服务架构下都会出现数据不一致问题。所以Mybatis 为我们提供了自定义缓存 我们可以集成很多三方中间件来做缓存 这里就那Redis来说一下。
application.properties 中配置
# 开启缓存
mybatis-plus.configuration.cache-enabled=true
#redis 配置
redis.host=localhost
redis.port=6379
redis.connectionTimeout=5000
redis.password=
redis.database=0
mapper.xml 中配置
<cache type="org.mybatis.caches.redis.RedisCache"/>
三、应用
1、引包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2、配置
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.swim.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
3、接口文件