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]

【串线篇】SQL映射文件-联合查询(完结association+cellection)的更多相关文章

  1. 【串线篇】sql映射文件-分布查询(上)association 1-1

    1.场景 1把钥匙带1把锁 JavaBean:private Lock lock;//当前钥匙能开哪个锁: 1). interface KeyDao: public Key getKeyByIdSim ...

  2. 【串线篇】sql映射文件-分布查询(下)cellection的1-n

    1.场景 一个门人手一把钥匙 1-n 一个Lock对应一个Key集合(collection自动整成list) Map不是collection的子接口或者实现类.Map是一个接口. JavaBean:p ...

  3. 关于mybatis中sql映射文件模糊查询的使用

    1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...

  4. NHibernate 映射基础(第三篇) 简单映射、联合主键

    NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...

  5. Mybatis sql映射文件浅析 Mybatis简介(三)

    简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...

  6. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  7. SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】

    SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 My ...

  8. SQL映射文件

     SQL映射文件的几个顶级元素 mapper - namespace cache - 配置给定命名空间的缓存 cache-ref – 从其他命名空间引用缓存配置 resultMap –用来描述数据库结 ...

  9. MyBatis 的基本要素—SQL 映射文件

    MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...

随机推荐

  1. php长连接和短连接的使用场景

    短连接 连接->传输数据->关闭连接 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接. 具体就是 浏览器client发起并建立T ...

  2. [CF959E]Mahmoud and Ehab and the xor-MST题解

    解法 又是一道结论题? 我的做法比较奇怪且没有证明 #include <cstdio> #include <cmath> #define ll long long int ma ...

  3. app中使用

    KeepLive.startWork(this, KeepLive.RunMode.ROGUE, ForegroundNotification("Title", "mes ...

  4. Ubuntu 18.04 截图工具 Shutter(可以标记重点)-安装及使用

    Shutter 是一个功能丰富的屏幕截图程序.您可以屏幕的某个特定区域.特定的窗口. 或者是整个屏幕,甚至一整个网站截图.可以对截图应用各种效果,标记重点,然后上 传到一个图片托管网站——所有的任务在 ...

  5. 《图解设计模式》读书笔记4-2 STRATEGY模式

    目录 示例程序 角色 想法 Strategy模式即策略模式,在编程中,策略指的就是算法.利用此模式可以整体替换算法,即使用不同方式解决同一个问题.比如设计一个围棋程序,通过切换算法可以方便地切换AI的 ...

  6. 16/7/11_PHP-PHP异常处理

    抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被执行. 既然抛出异常会中断程序执行,那么为什么 ...

  7. 表单组件中state依赖props

    参阅避免派生状态的博文: https://zh-hans.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

  8. HDU 1269 迷宫城堡 (Kosaraju)

    题目链接:HDU 1269 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000), ...

  9. poj3614Sunscreen

    Description To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her ...

  10. hdu2602Bone Collector ——动态规划(0/1背包问题)

    Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collec ...