• 学习Mybatis中的缓存以减少对数据库的蹂躏


    一、一级缓存

    通过Mybatis自带缓存,且默认开启一级缓存,不开启二级,当使用同样的sqlsession对象查询相同数据时,只有第一次查询会向数据库发送查询语句,并将查询结果放入session缓存中,之后查询相同数据时,直接在缓存中取用即可。

    commit可以清除缓存。

    二、当二个或多个sqlsession对象查询相同数据时,那么可以开启二级缓存。

    在conf.xml文件中的开启日志setting标签下,添加标签<setting name="cacheEnabled" value="true">

    并在想要查询的数据库操作语句的mapper.xml文件中添加声明开启二级缓存。

    <cache/>即可。

    然后运行,会出现序列化问题。

     然后我们将会涉及到的实体类全部序列化,在实体类添加接口。

    implements Serializable。

    之后在测试类中:

    public static void queryPerson2_yijihuancun2() throws IOException{
    					//加载配置文件
    					Reader reader = Resources.getResourceAsReader("conf.xml");
    					//SqlsessionFactory -- conection
    					 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    					 SqlSession session = sessionFactory.openSession();
    					 personMapper personmapper = session.getMapper(personMapper.class);
    					 Person person = personmapper.queryPersonById(1);
    					 session.close();
    					 //第二次查询
    					 SqlSession session2 = sessionFactory.openSession();
    					 personMapper personmapper2 = session2.getMapper(personMapper.class);
    					 Person person2 = personmapper2.queryPersonById(1);
    					 System.out.println(person.toString()+","+person2.toString());
    					 session2.close();
    				}
    

      

     只查了一次。再次减少了对数据库的蹂躏。- .-

    注意:二级缓存的适用范围是同一个namespace。

  • 相关阅读:
    centos7的网络设置
    day1学习
    举例讲解Linux系统下Python调用系统Shell的方法
    Python引用模块和查找模块路径
    详解Python中的循环语句的用法
    [cf1566H]Xorquiz
    [luogu5180]支配树
    [atAGC055D]ABC Ultimatum
    [cf1552H]A Serious Referee
    [gym102538H]Horrible Cycles
  • 原文地址:https://www.cnblogs.com/jccjcc/p/13970054.html
Copyright © 2020-2023  润新知