springboot mybatis3 二级缓存demo
时间: 2023-07-03 08:30:34 浏览: 56
好的,下面是一个简单的 Spring Boot + MyBatis3 二级缓存的示例代码:
1. 首先,配置 MyBatis3 的二级缓存,需要在 `mybatis-config.xml` 文件中添加以下配置:
```xml
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="true"/>
<setting name="defaultExecutorType" value="REUSE"/>
</settings>
<typeAliases>
<!-- 配置实体类的别名 -->
<typeAlias type="com.example.demo.entity.User" alias="User"/>
</typeAliases>
<mappers>
<!-- 配置 mapper -->
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据源 -->
</dataSource>
</environment>
</environments>
</configuration>
```
2. 然后,在 `UserMapper.xml` 文件中添加以下配置:
```xml
<mapper namespace="com.example.demo.mapper.UserMapper">
<cache type="org.apache.ibatis.cache.impl.PerpetualCache"/>
<resultMap id="userResultMap" type="User">
<!-- 配置结果集 -->
</resultMap>
<select id="getUserById" resultMap="userResultMap" useCache="true">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
其中,`<cache>` 标签用于配置二级缓存的实现类,这里使用的是 MyBatis 内置的 `PerpetualCache` 类。`<select>` 标签的 `useCache` 属性用于开启二级缓存。
3. 最后,在 `UserService` 中使用 MyBatis 查询并测试二级缓存:
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.getUserById(id);
}
}
```
这样,当多次调用 `getUserById` 方法时,第一次会从数据库中查询数据,并缓存在二级缓存中。后续调用该方法时,会直接从缓存中获取数据,而不是再次查询数据库。