首页 > 其他 > 详细

mybatis 的两级缓存(示例)

时间:2019-12-25 22:50:37      阅读:112      评论:0      收藏:0      [点我收藏+]

1.创建 Mapper

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE name = #{name} limit 1")
    User selectOne(@Param("name") String name);

    @Select("SELECT * FROM user WHERE age = #{age}")
    List<User> selectList(@Param("age") Integer age);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(@Param("name") String name, @Param("age") Integer age);
}

测试数据

userMapper.insert("贝贝", 23);
userMapper.insert("琪琪", 23);
userMapper.insert("二狗", 23);

 

示例1:

userMapper.selectOne("贝贝");
userMapper.selectOne("贝贝");
userMapper.selectList(23);

总共发出了 3条请求,并且每个请求都会创建一个新的 sqlSession

技术分享图片

 

示例2:

try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
    UserMapper userMapper2 = sqlSession.getMapper(UserMapper.class);
    userMapper2.selectOne("贝贝");
    userMapper2.selectOne("贝贝");
    userMapper2.selectList(23);
    sqlSession.commit();
}

公用一个 sqlSession,只发了 2条请求,其中第2个语句没有发请求(利用了 mybatis 一级缓存)

技术分享图片

 

 示例3:

@Transactional
public void query() {
    userMapper.selectOne("贝贝");
    userMapper.selectOne("贝贝");
    userMapper.selectList(23);
}

类似于示例2,只创建一个 sqlSession,并且第 2个语句依然直接使用了缓存

技术分享图片

 

 

233

mybatis 的两级缓存(示例)

原文:https://www.cnblogs.com/lemos/p/12099227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!