Mybatis学习笔记---day03缓存
来源:互联网 发布:淘宝店铺亲属过户 编辑:程序博客网 时间:2024/04/29 08:31
一:Mybatis的延时加载
1.一级缓存的介绍:
Mybatis中有一级缓存,一级缓存默认开启的,是sqlSession级别的缓存,例如:当查询用户订单和用户信息时,首先查出来的是三个订单,而三个订单分别属于两个用户,所以在查询出订单的时候,只需要再向数据库发送两条查询用户信息的sql即可,因为其中的两个订单是属于同一个用户的,这就是Mybatis'的一级缓存
2.通过查询用户信息及订单的例子证明一级缓存的存在
a、编写Mapper接口中的方法
//查询所有订单,使用延时加载先不查询用户信息,当需要时再查询public List<Orders> selectOrdersNoUser();
b、编写Mapper.xml配置文件中的延时加载配置
<!-- 根据用户id获取用户信息 --><select id="selectUserById" parameterType="Integer" resultType="User">select *from user where id = #{id}</select><!-- 手动映射, 获取所有订单信息 --><resultMap type="Orders" id="ordersResultMap"><result column="id" property="id"/><result column="user_id" property="userId"/><result column="number" property="number"/><result column="createtime" property="createtime"/><result column="note" property="note"/><!-- 一对一关系 以下是对用户信息进行延时加载的写法:select:调用之前根据Id获取用户信息方法的门牌号column:select中查询用户信息方法的入参--><association property="user" javaType="User" select="selectUserById" column="user_id"><result column="id" property="id"/><result column="username" property="username"/><result column="sex" property="sex"/><result column="birthday" property="birthday"/><result column="address" property="address"/></association></resultMap><!-- 查询所有订单信息的方法,延时加载用户信息 --><select id="selectOrdersNoUser" resultMap="ordersResultMap">select order.* from Orders</select>
c、编写Junit测试类
//获取所有订单信息,采用延时加载用户的方法@Testpublic void selectOrdersNoUser(){SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<Orders> orders = userMapper.selectOrdersNoUser();System.out.println(orders);}
d、通过直接查询数据库证明订单及用户的关系
e、通过Debug分析数据库sql执行的条数
f、在sqlMapConfig.xml中的setting中配置延时加载开关
<configuration><!-- 全局配置参数 --><settings><!-- 延时加载总开关 --><setting name="lazyLoadingEnabled" value="true"/><!-- 设置按需加载 --><setting name="aggressiveLazyLoading" value="false"/></settings>
二:Mybatis的二级缓存
1.Mybatis的二级缓存是sqlSessionFactory级别的缓存,使用步骤
a、在sqlMapConfig中配置setting群居变量
<configuration><!-- 全局配置参数 --><settings><!-- 延时加载总开关 --><setting name="lazyLoadingEnabled" value="true"/><!-- 设置按需加载 --><setting name="aggressiveLazyLoading" value="false"/></settings>
b、在需要使用二级缓存的Mapper.xml文件中配置使用
<mapper namespace="com.mybatis.mapper.UserMapper"><!-- 开启本mapper的二级缓存 --><cache/>
0 0
- Mybatis学习笔记---day03缓存
- java 学习笔记 day03
- JQuery学习笔记--Day03
- C++学习笔记 day03
- mysql 学习笔记 day03
- Java学习笔记 Day03
- 基础学习day03笔记
- Oracle学习笔记--day03
- Java学习笔记Day03
- struts2 day03学习笔记
- Mybatis学习笔记-一级缓存
- MyBatis缓存机制学习笔记
- Mybatis学习笔记-MyBatis缓存的使用
- python学习笔记day03 Number
- MyBatis学习笔记(九)缓存
- Mybatis学习笔记-一级缓存与二级缓存
- 查询缓存---Mybatis学习笔记(十)
- 查询缓存---Mybatis学习笔记(十)
- 【SSH】Spring与Struts整合
- 大数据IMF传奇行动绝密课程第18课:RDD持久化、广播、累加器
- 一万小时的刻意训练
- 出现乱码问题
- android提高应用启动速度_splash页面瞬间响应_避免APP启动闪白屏
- Mybatis学习笔记---day03缓存
- wireshark怎么抓包、wireshark抓包详细图文教程
- POJ 3083Children of the Candy Corn(BFS + DFS)
- 网站第三方登录
- CodeForces 705A Hulk(字符串输出)
- 在js中添加< br/>
- Oracle 数据库web客户端管理工具软件
- JavaScript 资源大全中文版
- IAR 工具使用AStyle工具格式化代码