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]

最新文章

  1. python中非关键字可变长参数和关键字变量参数的区别
  2. 通过trie树实现单词自动补全
  3. SQL Server更新表(用一张表的数据更新另一张表的数据)
  4. 【C】 05 - 声明和定义
  5. java操作cookies
  6. 对VC++6.0爱得深沉(一)安装vc++6.0,支持winXP,win7,win8.1,win10
  7. Axure 入门
  8. 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
  9. SSM框架多数据源和AOP事务管理之间
  10. 003_Git &amp; Gitlab 使用指南
  11. BottomNavigationBar + BottomNavigationBarItem导航的另外一种用法
  12. React 组件
  13. 基于Java+SparkStreaming整合kafka编程
  14. caffe 每层结构
  15. java怎样把后台值传到前台
  16. PhotoSwipe 图片浏览插件使用方法
  17. EasyUI-window包含一个iframe,在iframe中如何关闭window
  18. Android App性能測试
  19. 【GZAdmin】开源BS demo快速搭建
  20. idea 编程字体推荐

热门文章

  1. php array_slice()函数 语法
  2. 腾讯云服务器centos通过yum安装mysql数据库
  3. 不用print调试 xdebug ubuntu phpstorm 远程断点调试
  4. 【Unity 系统知识】 Time类
  5. ELK+Filebeat (2)
  6. pandas基础(第一章(一))
  7. 监控服务器的脚本log_agent
  8. 【转载】sizeof()、strlen()、length()、size()详解和区别
  9. H Kuangyeye and hamburgers
  10. 安装weblogic中间件_test