Mybatis(15)Mybatis延迟加载/缓存
复制项目day03_eesy_03one2many到新建的项目day04_eesy_01lazy
1.删除项目中AccountUser类
2.IAccountDao接口中只保留findAll()
3.AccountTest类只保留testFindAll()
实现一对一延迟加载
4.更改IAccountDao.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IAccountDao"><!--定义封装account和user的resultMap--><resultMap id="accountUserMap" type="account"><id property="id" column="id"></id><result property="uid" column="uid"></result><result property="money" column="money"></result><!--一对一关系映射,配置封装user的内容--></resultMap><!--查询所有--><select id="findAll" resultMap="accountUserMap">select * from account</select></mapper>
5.测试AccountTest中的findAll方法
配置延迟加载
更改IAccountDao.xml
<resultMap id="accountUserMap" type="account"><id property="id" column="id"></id><result property="uid" column="uid"></result><result property="money" column="money"></result><!--一对一关系映射,配置封装user的内容,select指定内容,查询用户的唯一标识,column属性指定的内容,用户根据id查询时,所需参数的值--><association property="user" column="uid" javaType="user" select="com.itheima.dao.IUserDao.findById"></association></resultMap>
此时执行testFindAll(),结果如下
并未实现一对一延迟加载
百度mybatis在xml中找到setting,更改SqlMapConfig.xml配置文件
<configuration><configuration>中加入下列配置
<!--配置参数--><settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false"></setting></settings>
测试结果
一对多情况下的延迟加载
1.IUserDao和IUserDao.xml
//根据id查询用户信息User findById(Integer userId);//IUserDao.xml
<!--根据id查询用户--><select id="findById" parameterType="INT" resultType="user">select * from user where id=#{userId};</select>
<!--配置user对象中accounts集合的映射,property是配置集合的名字ofType是集合元素类型accounts--><collection property="accounts" ofType="account" select="com.itheima.dao.IAccountDao.findAccountByUid" column="id"></collection>
2. IAccountDao和IAccountDao.xml
//根据用户id查询账户信息List<Account> findAccountByUid(Integer uid);//IAccountDao.xml
<!--查询一条账户信息--><select id="findAccountByUid" resultType="account">select * from account where id=#{uid}</select>
3.测试,实现了一对多的延迟加载
Mybatis(15)Mybatis延迟加载/缓存相关推荐
- MyBatis框架:延迟加载策策略、一级缓存、二级缓存
MyBatis框架:延迟加载策略和缓存 Mybatis 延迟加载策略 1.1 何为延迟加载? 1.2 实现需求 1.3 使用association实现延迟加载 1.3.1 账户的持久层DAO接口 1. ...
- MyBatis(延迟加载 缓存)
mybatis目录 一对一延迟加载 1.在SqlMapConfig.xml中配置setting标签 2.在IAccoutDao.xml中配置association标签 3.测试类 4.成功运行 一对多 ...
- MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j
MyBatis优缺点 select延迟加载 接口式MyBatis编程 一级缓存 一级缓存原理 一级缓存命中原则 一级缓存销毁 一级缓存避免脏读不可重复读 一级缓存与spring@事务 二级缓存 与一级 ...
- mybatis (高级映射 缓存 延迟加载)
1 一对一查询映射的pojo 创建pojo包括 订单信息和用户信息,resultType才可以完成映射. 一个订单对应一个用户 因此在订单实体类中 我们应该加入一个用户属性 实体类如下: ...
- SpringMVC+Mybatis+MySQL配置Redis缓存
SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...
- MyBatis 源码分析 - 缓存原理
1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...
- MyBatis】MyBatis一级缓存和二级缓存
转载自 MyBatis]MyBatis一级缓存和二级缓存 MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存.一级缓存的作用域默认是一个SqlSe ...
- MyBatis学习系列——二级缓存
[MyBatis学习13]MyBatis中的二级缓存 发表于2016/6/16 7:26:19 4922人阅读 分类: ● 框架技术 --[MyBatis] 1. 二级缓存的原理 前面介绍了,myb ...
- 【MyBatis学习8】MyBatis中的二级缓存
1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...
- 【MyBatis学习13】MyBatis中的二级缓存
1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...
最新文章
- python中将HTTP头部中的GMT时间转换成datetime时间格式
- R语言:再谈REmap包
- Python 内编写类的各种技巧和方法
- Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势
- jzoj5699-[GDOI2018day1]涛涛接苹果【树套树】
- Linux MySQL 源码编译安装
- VS2013下载及安装
- crmeb 一号通使用方法
- 诛仙服务器技能修改,2021年5月21日正式服技能修改公告
- 计算机图形学在游戏设计中的应用
- es文件创建局域网服务器,es文件浏览器局域网连接win10电脑怎么设置
- 碎片化学习和系统化学习的对比
- 【Datawhale数据可视化组队学习】Task05 - 样式色彩秀芳华
- Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能
- php安全开发正则表达式,动态网页制作PHP常用的正则表达式
- 境外IP判断一种实现方案
- JAVA创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length)、宽(width)和高(heigth)
- html图片切换动画,js实现图片切换(动画版)
- co作为前缀的意思_卡西欧G-SHOCK型号解析大全 看懂前缀的字母 省的被忽悠
- 白城师范学院计算机系鲍金玲,白城师范学院举办程序设计竞赛