mybatis一级缓存命中条件
生活随笔
收集整理的這篇文章主要介紹了
mybatis一级缓存命中条件
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、執(zhí)行的sql和參數(shù)必須相同
如:
//命中: User user1 = userMapper.selectById(1); User user2 = userMapper.selectById(1); //緩存命中,返回結(jié)果為true sout(user1 == user2)//不命中: userMapper.selectById(1); userMapper.selectById(2);2、必須是相同的statementId (com.sms.mapper.UserMapper.selectById) 如:
//命中: UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 底層都是執(zhí)行selectOne userMapper.selectById(1); sqlSession.selectOne("com.xxx.xxx.UserMapper.selectById",1);//不命中: //statementId為com.xxx.xxx.UserMapper.selectById userMapper.selectById(1); //statementId為com.xxx.xxx.UserMapper.selectByIdddd userMapper.selectByIddddd(1);3、sqlSession一樣(會(huì)話級(jí)緩存)
//命中: UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.selectById(1); userMapper.selectById(1);//不命中: UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.selectById(1); //創(chuàng)建新的session會(huì)話 factory.openSession.getMapper(UserMapper.class).selectById(1);4、RowBounds返回行數(shù)必須相同
//命中 //selectById底層就是執(zhí)行selectOne并直接賦值RowBounds為DEFAULT userMapper.selectById(1); sqlSession.selectOne("com.xxx.xxx.UserMapper.selectById",1,RowBounnds.DEFAULT);//不命中 userMapper.selectById(1); //分頁(yè)從0開(kāi)始取10個(gè)數(shù) sqlSession.selectOne("com.xxx.xxx.UserMapper.selectById",1,new RowBounds(0,10));總結(jié)
以上是生活随笔為你收集整理的mybatis一级缓存命中条件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 漫谈promise使用场景
- 下一篇: mybatis清除一级缓存的几种方法