【串线篇】sql映射文件-分布查询(上)association 1-1
1.场景
1把钥匙带1把锁
JavaBean:private Lock lock;//当前钥匙能开哪个锁;
1)、
interface KeyDao:
public Key getKeyByIdSimple(Integer id);//步一
interface LockDao:
public Lock getLockByIdSimple(Integer id);//步二
2)、
KeyDao.xml:
<!-- id keyname lockid -->
<select id="getKeyByIdSimple" resultMap="mykey02">
select * from t_key where id=#{id}
</select>
LockDao.xml:
<select id="getLockByIdSimple" resultType="com.atguigu.bean.Lock">
select * from t_lock where id=#{id}
</select>
定义两个最原生简单的查询,作为两步
3)、KeyDao.xml:
<resultMap type="com.atguigu.bean.Key" id="mykey02">
<id property="id" column="id"/>
<result property="keyName" column="keyname"/>
<!--告诉mybatis自己去调用一个查询查锁子,步二
select="":指定一个查询sql的唯一标识;mybatis自动调用指定的sql将查出的lock封装进来
<!--column:指定将哪一列的数据传递过去,传递到LockDao.xml:
-->
<association property="lock"
select="com.atguigu.dao.LockDao.getLockByIdSimple"
column="lockid" fetchType="lazy"></association>
</resultMap>
【注意】LockDao.xml:中select * from t_lock where id=#{id}这个id是单个属性可以随便写{haha}
关键是会将KeyDao.xml:中column="lockid" 作为参数传入
Key表 Lock表


4)、测试
KeyDao mapper = openSession.getMapper(KeyDao.class);
Key key = mapper.getKeyByIdSimple(1);
System.out.println(key);
【打印】
Key [id=1, keyName=1号钥匙, lock=Lock [id=1, lockName=1号锁]]
2.延迟加载(全局)和按需加载(属性)
由于分布查询的第二步mybatis自己去调用一个查询查锁子,步二,也就是说在测试的时候Key key = mapper.getKeyByIdSimple(1);返回的这个key一定是包括Lock信息的不管你需不需要。这就会造成严重的性能问题
在全局配置文件mybatis-config.xml配置两项
<settings>
<!-- 开启延迟加载开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 开启属性按需加载 -->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
测试:
Key key = mapper.getKeyByIdSimple(1);
System.out.println(key);//只会发一条sql,即步1
// Thread.sleep(3000);
// String lockName = key.getLock().getLockName();//规定这个时候再发第二条sql,即步2
// System.out.println(lockName);
3.不过
<resultMap type="com.atguigu.bean.Key" id="mykey02">
<id property="id" column="id"/>
<result property="keyName" column="keyname"/>
<!--告诉mybatis自己去调用一个查询查锁子,步二
select="":指定一个查询sql的唯一标识;mybatis自动调用指定的sql将查出的lock封装进来
column:指定将哪一列的数据传递过去
-->
<association property="lock"
select="com.atguigu.dao.LockDao.getLockByIdSimple"
column="lockid" fetchType="lazy"></association>
</resultMap>
在<association></association>标签体里有一个属性
fetchType="lazy"/“eager”
会覆盖这两个全局配置

【串线篇】sql映射文件-分布查询(上)association 1-1的更多相关文章
- 【串线篇】sql映射文件-分布查询(下)cellection的1-n
1.场景 一个门人手一把钥匙 1-n 一个Lock对应一个Key集合(collection自动整成list) Map不是collection的子接口或者实现类.Map是一个接口. JavaBean:p ...
- 【串线篇】SQL映射文件-联合查询(完结association+cellection)
1.级联属性的方式封装查出1-1 查钥匙的时候顺别把对应的级联的那把锁也查出来 1).两个JavaBean,Key里有对应的Lock(private Lock lock;//当前钥匙能开哪个锁:) 2 ...
- 关于mybatis中sql映射文件模糊查询的使用
1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...
- 二:SQL映射文件
二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- MyBatis -- sql映射文件具体解释
MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...
- MyBatis 的基本要素—SQL 映射文件
MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...
- SSM - Mybatis SQL映射文件
MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给 ...
随机推荐
- php中换行怎么写
PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性 unix系列用(推荐学习:PHP编程从入门到精通) 1 windows系列用 1 \r\n mac用 1 如: 1 2 3 4 5 6 ...
- ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- 开发zeroc ice应用入门(java开发ice应用,python开发ice应用,java与python结合开发ice服务)
ice作为一种rpc框架,为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如Visual Basic),Python,Ruby,PH ...
- AGC040
AGC040 A 模拟. B 因为顺序无关紧要,所以可以先把区间按右端点排序方便处理. 设第一个区间在\(A\)集合,考虑枚举第一个在\(B\)集合的区间\(i\),这样两个集合的右端点\(\min\ ...
- 人脸对比微信小程序
https://cloud.tencent.com/document/product/867/17584 测试数据: 图片1: 图片2:
- 音悦台 api分析
用户订阅MV更新 http://uapi.yinyuetai.com/i/flw/subscribe-video-list?page=1&pageSize=200&uid=XXXXXX ...
- (转)字符编码笔记:ASCII,Unicode 和 UTF-8
转:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之 ...
- Note-Git:Git 笔记
ylbtech-Note-Git:Git 笔记 1.返回顶部 · Git 分支管理: 主干/master.热修正/hotfix.预生产/release.开发develop.个人1(个人.小团队)/f ...
- CDN:BootCDN
ylbtech-CDN:BootCDN BootCDN稳定.快速.免费的前端开源项目 CDN 加速服务共收录了 3351 个前端开源项目 1. 推荐返回顶部 1. bootstrap Bootstra ...
- 133、TensorFlow加载模型(二)
# 选择哪个变量来保存和恢复 # 如果你没有传递任何的参数到tf.train.Saver() # 这个saver会处理计算图中所有的变量 # 每一个变量都被保存,保存的名字就是当初创建他们时候的名字 ...