复制项目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延迟加载/缓存相关推荐

  1. MyBatis框架:延迟加载策策略、一级缓存、二级缓存

    MyBatis框架:延迟加载策略和缓存 Mybatis 延迟加载策略 1.1 何为延迟加载? 1.2 实现需求 1.3 使用association实现延迟加载 1.3.1 账户的持久层DAO接口 1. ...

  2. MyBatis(延迟加载 缓存)

    mybatis目录 一对一延迟加载 1.在SqlMapConfig.xml中配置setting标签 2.在IAccoutDao.xml中配置association标签 3.测试类 4.成功运行 一对多 ...

  3. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j

    MyBatis优缺点 select延迟加载 接口式MyBatis编程 一级缓存 一级缓存原理 一级缓存命中原则 一级缓存销毁 一级缓存避免脏读不可重复读 一级缓存与spring@事务 二级缓存 与一级 ...

  4. mybatis (高级映射 缓存 延迟加载)

    1     一对一查询映射的pojo 创建pojo包括 订单信息和用户信息,resultType才可以完成映射. 一个订单对应一个用户   因此在订单实体类中 我们应该加入一个用户属性  实体类如下: ...

  5. SpringMVC+Mybatis+MySQL配置Redis缓存

    SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...

  6. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  7. MyBatis】MyBatis一级缓存和二级缓存

    转载自  MyBatis]MyBatis一级缓存和二级缓存 MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存.一级缓存的作用域默认是一个SqlSe ...

  8. MyBatis学习系列——二级缓存

    [MyBatis学习13]MyBatis中的二级缓存 发表于2016/6/16 7:26:19  4922人阅读 分类: ● 框架技术 --[MyBatis] 1. 二级缓存的原理 前面介绍了,myb ...

  9. 【MyBatis学习8】MyBatis中的二级缓存

    1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...

  10. 【MyBatis学习13】MyBatis中的二级缓存

    1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...

最新文章

  1. python中将HTTP头部中的GMT时间转换成datetime时间格式
  2. R语言:再谈REmap包
  3. Python 内编写类的各种技巧和方法
  4. Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势
  5. jzoj5699-[GDOI2018day1]涛涛接苹果【树套树】
  6. Linux MySQL 源码编译安装
  7. VS2013下载及安装
  8. crmeb 一号通使用方法
  9. 诛仙服务器技能修改,2021年5月21日正式服技能修改公告
  10. 计算机图形学在游戏设计中的应用
  11. es文件创建局域网服务器,es文件浏览器局域网连接win10电脑怎么设置
  12. 碎片化学习和系统化学习的对比
  13. 【Datawhale数据可视化组队学习】Task05 - 样式色彩秀芳华
  14. Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能
  15. php安全开发正则表达式,动态网页制作PHP常用的正则表达式
  16. 境外IP判断一种实现方案
  17. JAVA创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length)、宽(width)和高(heigth)
  18. html图片切换动画,js实现图片切换(动画版)
  19. co作为前缀的意思_卡西欧G-SHOCK型号解析大全 看懂前缀的字母 省的被忽悠
  20. 白城师范学院计算机系鲍金玲,白城师范学院举办程序设计竞赛

热门文章

  1. 使用vs2017 作为matlab2016a b编译器 解决无法找到编译器问题【免费】
  2. Spring安装与入门
  3. 单用户登陆demo-后者挤到前者,类似QQ
  4. (转) 微软项目管理培训笔记(一)
  5. Android源码解析:UI绘制流程之测量.md
  6. win7禁用Adnimistrator账号登录
  7. 机器学习论文泛读总结
  8. Linux 下 -bash: mysql: command not found解决办法
  9. mysql集群之keepalived简单搭建
  10. 30款非常酷的创意名片设计欣赏