生活随笔
收集整理的這篇文章主要介紹了
MyBatis从缓存查找数据的依据
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MyBatis的查詢依據(jù)是:Sql的id+SQL語句。
Hibernate的查依據(jù)是:查詢結(jié)果對(duì)象的id。
緩存的底層實(shí)現(xiàn)是一個(gè)Map,Map的value是查詢結(jié)果。Map的key,即查詢依據(jù),使用的ORM架構(gòu)不同,查詢依據(jù)就不不同。
?/*緩存的底層實(shí)現(xiàn)是一個(gè)Map,Map的value是查詢結(jié)果*/
?/*Map的key,即查詢依據(jù),即使用的ORM框架不同,查詢依據(jù)是不同的*/
?/*MyBatics的查詢依據(jù)是:sql的id+sql語句*/
??/*Hibernate的查詢依據(jù)是:查詢結(jié)果對(duì)象的id*/
??/*證明從一級(jí)緩存中讀取數(shù)據(jù)的依據(jù),執(zhí)行不同的方法(但sql語句相同)*/
/*增刪改都會(huì)清空一級(jí)緩存,無論是否提交*/
?
<mapper namespace="org.lfz.dao.IStudentDao"><select id="selectStudentById" resultType="Student">select id,name,age,score from tb_student where id=#{xxx}</select><select id="selectStudentById2" resultType="Student">select id,name,age,score from tb_student where id=#{xxx}</select>
</mapper>
public class MyTest {private IStudentDao dao;@Beforepublic void before() {SqlSession sqlSession = MyBatisUtils.getSqlSession();dao = sqlSession.getMapper(IStudentDao.class);}/*證明一級(jí)緩存的存在*/@Testpublic void testSelectStudentById() {Student stu = dao.selectStudentById(2);System.out.println(stu);Student stu1 = dao.selectStudentById(2);System.out.println(stu1);}/*緩存的底層實(shí)現(xiàn)是一個(gè)Map,Map的value是查詢結(jié)果*//*Map的key,即查詢依據(jù),即使用的ORM框架不同,查詢依據(jù)是不同的*//*MyBatics的查詢依據(jù)是:sql的id+sql語句*//*Hibernate的查詢依據(jù)是:查詢結(jié)果對(duì)象的id*//*證明從一級(jí)緩存中讀取數(shù)據(jù)的依據(jù),執(zhí)行不同的方法(但sql語句相同)*/@Testpublic void testSelectStudentById2() {Student stu = dao.selectStudentById(2);System.out.println(stu);Student stu1 = dao.selectStudentById2(2);System.out.println(stu1);}/*增刪改都會(huì)清空一級(jí)緩存,無論是否提交*/@Testpublic void test03() {Student stu = dao.selectStudentById(2);System.out.println(stu);//增刪改都會(huì)清空一級(jí)緩存dao.insertStudent(new Student("小明",23,95.5));Student stu1 = dao.selectStudentById(2);System.out.println(stu1);}
}
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的MyBatis从缓存查找数据的依据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。