首页 > 其他 > 详细

mybatis(3)

时间:2021-04-27 19:56:53      阅读:19      评论:0      收藏:0      [点我收藏+]

一,mybatis的延迟加载


1,延迟加载

  在真正使用数据的时候才发起查询,不用的时候不查询,按需加载(懒加载)

2,立即加载

  不管用不用,只要一调用,马上发起查询。

3,四种表关系

  一对一,多对一:采用立即加载。

  一对多,多对多:懒加载。

二,mybatis的缓存


 1,什么是缓存

  存在于内存中的临时数据

2,为什么使用缓存

  减少和数据库的交互次数,提高执行效率。

3,什么样的数据使用缓存

  使用于缓存:

    经常查询且不经常改变的。

    数据的正确与否最终的结果影响不大

  不适用于缓存: 

    经常改变的数据

    数据的正确与否对数据的影响很大

4,Mybatis中的一级缓存:

  指的是mybatis中的SqlSession对象的缓存

  当执行查询后,查询的结果会同时存入到SqlSession为我们提供的一块区域中。

  该区域的结构是一个Map,当我们再次查询同样的数据,mybatis会先去SqlSession中查询是否有,有直接拿出来使用。

  当SqlSession对象消失时,mybatis的一级缓存也就消失了。

  注意:1,一级缓存:使用的是同一个对象

      2,SqlSession范围的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存

 

<!-- mybatis开启支持延迟加载 -->
         <setting name="lazyLoadingEnabled" value="true"/>
     
     </settings>

 

 

<mapper namespace="com.dao.Load">

    <!-- 定义account和user的resultMap -->
        <resultMap type="account" id="accountUserMap">
        <id property="id" column="id"></id>
        <result property="uid" column="user_id" ></result>
        <result property="money" column="money" ></result>
        <!--  -->
        <association property="user" column="user_id" javaType="user" select="com.dao.IUserDao.findById">
        </association> 
        </resultMap>

    <!-- 一对一,或者多对一  配置查询所有  -->
        <select id="findAll" resultMap="accountUserMap">
                select  * from my_account;
        </select>
        
        
        

</mapper>

5,二级缓存

   5.1定义:指的是Mybatis中SqlSessionFactory对象的缓存,有同一个SqlSessionFactory对象创建的

      SqlSession共享其缓存

   5.2步骤:

    第一步:让mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)

<settings>
     <!-- mybatis开启二级缓存 -->
         <setting name="cacheEnabled" value="true"/>
     
     </settings>

 

    第二部:让当前的映射文件支持二级缓存(在当前的映射文件中配置)

<!-- 开启二级缓存 -->
    <cache/>

 

    第三步:让当前的操作支持二级缓存(在select标签中配置)

 

     

<select id="findAll" resultMap="accountUserMap" useCache="true">
                select  * from my_account;
        </select>

 

    5.3:注意:二级缓存中存放的是数据不是对象。实际:访问二级缓存时是获取对象的数据,创建一个对象。

 

三,mybatis中的注解开发

mybatis(3)

原文:https://www.cnblogs.com/gjx1212/p/14705158.html

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