一、简介

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、接口文件

MyBatis介绍及应用_三级缓存