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. C++创建对象时什么时候用*,什么时候不用*

    用*, 表示创建的是一个指针对象,而指针的创建,必须初始化,C++中用new关键字开辟内存. 另外指针对象访问成员变量用-> , 非指针用. 就这么个原则 但是指针也可以不用-> 例如 ( ...

  2. 用jquery实现图片轮播

    用jquery简单实现图片轮播效果,代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  3. 关于KindEditor编辑器,word文档中的图文全选粘贴,在编辑器中不显示图片的问题

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...

  4. 862C - Mahmoud and Ehab and the xor(构造)

    原题链接:http://codeforces.com/contest/862/problem/C 题意:给出n,x,求n个不同的数,使这些数的异或和为x 思路:(官方题解)只有n==2&&am ...

  5. FFT IP核调用与仿真之FFT数学分析

    对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...

  6. html5 figure和figcaption

    figure标签和figcaption标签是html5新增的语义化标签. figure标签,html5语义化标签. 用于规定独立的流内容(图像.图表.照片.代码等等). figcaption标签,ht ...

  7. 网易新闻实战 --- flask,ORM, Ajax异步删除

    项目概述: 包含功能: 前端-- 新闻首页 新闻分类页 新闻详情页 后端-- 后台新闻管理(列表,分页) 新增新闻 修改新闻 删除新闻(AJAX)

  8. poj1182食物链(三类并查集)

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种 ...

  9. Convolutional Neural Networks(2):Sparse Interactions, Receptive Field and Parameter Sharing

    Sparse Interactions, Receptive Field and Parameter Sharing是整个CNN深度网络的核心部分,我们用本文来具体分析其原理. 首先我们考虑Feedf ...

  10. RedHat可用的几处软件源

    rpmforge仓库 http://repoforge.org/use/ http://rpms.famillecollet.com/