【串线篇】SQL映射文件-联合查询(完结association+cellection)
1、级联属性的方式封装查出1-1
查钥匙的时候顺别把对应的级联的那把锁也查出来
1)、两个JavaBean,Key里有对应的Lock(private Lock lock;//当前钥匙能开哪个锁;)
2)、建两张表key表和lock表,key表里加外键
外键好处,安全性:单纯删key表里的一行记录删不掉,只有删除key表记录才行
3)、sql语句要对两个表两个相同名字id起别名,
id keyname lockid “lid” lockname
- - - - -
方便resultMap自定义封装规则指定返回数据的对应数据库列名
4)resultMap引用
2. association标签,mybatis推荐方便(续1)
表示联合了一个对象
<association property="lock" javaType="com.atguigu.bean.Lock">
<!-- 定义lock属性对应的这个Lock对象如何封装 -->
<id property="id" column="lid"/>
<result property="lockName" column="lockName"/>
</association>
【打印】
Key keyById = mapper.getKeyById(2);
System.out.println(keyById);
Key [id=2, keyName=2号钥匙, lock=Lock [id=2, lockName=2号锁]]
3. collection标签(一个门人手一把钥匙)1-n
一个Lock对应一个Key集合(collection自动整成list)
1)、JavaBean Lock (private List<Key> keys;)
<!--
private Integer id;
private String lockName;
//查询锁子的时候把所有的钥匙也查出来
private List<Key> keys;
id lockName kid keyname lockid
3 303办公室的锁子 3 303钥匙1 3
3 303办公室的锁子 4 303钥匙2 3
3 303办公室的锁子 5 303钥匙3 3
-->
<resultMap type="com.atguigu.bean.Lock" id="mylock">
<id property="id" column="id"/>
<result property="lockName" column="lockName"/>
<!--
collection:定义集合元素的封装
property="":指定哪个属性是集合属性
javaType:指定对象类型;association
ofType="":指定集合里面元素的类型
-->
<collection property="keys" ofType="com.atguigu.bean.Key">
<!-- 标签体中指定集合中这个元素的封装规则 -->
<id property="id" column="kid"/>
<result property="keyName" column="keyname"/>
</collection>
</resultMap>
【打印】
与1-1不同的是取出对象后,对其内部list遍历才能得到collection
Lock lock = mapper.getLockById(3);
System.out.println(lock);
System.out.println("所有锁子如下:");
List<Key> keys = lock.getKeys();
for (Key key : keys) {
System.out.println(key);
}
Lock [id=3, lockName=303办公室的锁子]
所有锁子如下:
Key [id=3, keyName=303钥匙1]
Key [id=4, keyName=303钥匙2]
Key [id=5, keyName=303钥匙3]
最新文章
- python中非关键字可变长参数和关键字变量参数的区别
- 通过trie树实现单词自动补全
- SQL Server更新表(用一张表的数据更新另一张表的数据)
- 【C】 05 - 声明和定义
- java操作cookies
- 对VC++6.0爱得深沉(一)安装vc++6.0,支持winXP,win7,win8.1,win10
- Axure 入门
- 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
- SSM框架多数据源和AOP事务管理之间
- 003_Git &; Gitlab 使用指南
- BottomNavigationBar + BottomNavigationBarItem导航的另外一种用法
- React 组件
- 基于Java+SparkStreaming整合kafka编程
- caffe 每层结构
- java怎样把后台值传到前台
- PhotoSwipe 图片浏览插件使用方法
- EasyUI-window包含一个iframe,在iframe中如何关闭window
- Android App性能測试
- 【GZAdmin】开源BS demo快速搭建
- idea 编程字体推荐
热门文章
- php array_slice()函数 语法
- 腾讯云服务器centos通过yum安装mysql数据库
- 不用print调试 xdebug ubuntu phpstorm 远程断点调试
- 【Unity 系统知识】 Time类
- ELK+Filebeat (2)
- pandas基础(第一章(一))
- 监控服务器的脚本log_agent
- 【转载】sizeof()、strlen()、length()、size()详解和区别
- H	Kuangyeye and hamburgers
- 安装weblogic中间件_test