例子1、

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.dao.KeyDao"> <!--public List<Key> getKeysByLockId(Integer id);
按照锁子id查出所有的key
-->
<select id="getKeysByLockId" resultType="com.atguigu.bean.Key">
select * from t_key where lockid=#{id}
</select> <!-- public Key getKeyByIdSimple(Integer id); -->
<!-- 查询key的时候也可以带上锁子信息 -->
<!--
private Integer id;//钥匙的id
private String keyName;//钥匙的名
private Lock lock;//当前钥匙能开哪个锁;
-->
<!-- id keyname lockid -->
<select id="getKeyByIdSimple" resultMap="mykey02">
select * from t_key where id=#{id}
</select>
<resultMap type="com.atguigu.bean.Key" id="mykey02">
<id property="id" column="id"/>
<result property="keyName" column="keyname"/>
<!--告诉mybatis自己去调用一个查询查锁子
select="":指定一个查询sql的唯一标识;mybatis自动调用指定的sql将查出的lock封装进来
public Lock getLockByIdSimple(Integer id);需要传入锁子id
告诉mybatis把哪一列的值传递过去
column:指定将哪一列的数据传递过去
-->
<association property="lock"
select="com.atguigu.dao.LockDao.getLockByIdSimple"
column="lockid" fetchType="lazy"></association>
</resultMap> <!-- getKeyById(Integer) -->
<!--
private Integer id;//钥匙的id
private String keyName;//钥匙的名
private Lock lock;//当前钥匙能开哪个锁; id keyname lockid lid lockName
-->
<select id="getKeyById" resultMap="mykey">
select k.id,k.`keyname`,k.`lockid`,
l.`id` lid,l.`lockName` from t_key k
left join t_lock l on k.`lockid`=l.`id`
where k.`id`=#{id}
</select> <!-- 自定义封装规则:使用级联属性封装联合查询出的结果 -->
<!-- <resultMap type="com.atguigu.bean.Key" id="mykey">
<id property="id" column="id"/>
<result property="keyName" column="keyname"/>
<result property="lock.id" column="lid"/>
<result property="lock.lockName" column="lockName"/>
</resultMap> --> <!-- mybatis推荐的 <association property=""></association>-->
<resultMap type="com.atguigu.bean.Key" id="mykey">
<id property="id" column="id"/>
<result property="keyName" column="keyname"/>
<!-- 接下来的属性是一个对象,自定义这个对象的封装规则;使用association;表示联合了一个对象 -->
<!-- javaType:指定这个属性的类型 -->
<association property="lock" javaType="com.atguigu.bean.Lock">
<!-- 定义lock属性对应的这个Lock对象如何封装 -->
<id property="id" column="lid"/>
<result property="lockName" column="lockName"/>
</association>
</resultMap>
    例子2、

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.dao.LockDao"> <!-- public Lock getLockByIdByStep(Integer id);
id lockName
1 1号锁
-->
<select id="getLockByIdByStep" resultMap="mylockstep">
select * from t_lock where id=#{id}
</select>
<!-- collection分步查询 -->
<resultMap type="com.atguigu.bean.Lock" id="mylockstep">
<id property="id" column="id"/>
<result property="lockName" column="lockName"/>
<!-- collection指定集合类型的属性封装规则 -->
<collection property="keys"
select="com.atguigu.dao.KeyDao.getKeysByLockId"
column="{id=id}"></collection>
<!-- {key1=列名,key2=列名} -->
</resultMap> <!--
update bs_book
set title=?,author=?,price=?,sales=?,stock=?,img_path=?
where id=?"; String sql = "update bs_book set";
if(employee.getTitle()){
sql+="title=?,"
}
if(){
sql + = "price=?,";
}
--> <!--public Lock getLockByIdSimple(Integer id); -->
<select id="getLockByIdSimple" resultType="com.atguigu.bean.Lock">
select * from t_lock where id=#{id}
</select> <!-- public Lock getLockById(Integer id); -->
<select id="getLockById" resultMap="mylock">
select l.*,k.id kid,k.`keyname`,k.`lockid` from t_lock l
left join t_key k on l.`id`=k.`lockid`
where l.id=#{id}
</select> <!--
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>

Mybatis的关联关系的配置的更多相关文章

  1. mybatis之关联关系

    前言:在我们之前的hibernate中我们是学过了关联关系的,所以我们在本章给讲一讲mybatis的关联关系. mybatis的关联关系一对多的测试1.通过逆向工程生成Hbook,HbookCateg ...

  2. Mybatis的二级缓存配置

    一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的.  Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的 ...

  3. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  4. Mybatis非mapper代理配置

    转: Mybatis非mapper代理配置 2017年04月26日 20:13:48 待长的小蘑菇 阅读数:870   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  5. MyBatis 源码分析——配置信息

    MyBatis框架的启动前期需要加载相关的XML配置信息.从官网上我们可以了解到他具有十几个节点.其中笔者认为比较重要的节点是settings节点.properties节点.environments节 ...

  6. Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html     http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...

  7. mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置

    mybatis generator配置,Mybatis自动生成文件配置,Mybatis自动生成实体Bean配置 ============================== 蕃薯耀 2018年3月14 ...

  8. MyBatis—mapper.xml映射配置

    SQL文件映射(mapper文件),几个顶级元素的配置: mapper元素:根节点只有一个属性namespace(命名空间)作用: 1:用于区分不同的mapper,全局唯一. 2:绑定DAO接口,即面 ...

  9. Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用

    1.Spring与Mybatis整合 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web ...

  10. mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?

    mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...

随机推荐

  1. RFID基础——概念与分类

    RFID 的全称是射频识别技术(Radio Frequency Identification).是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术 ...

  2. 云辅助隐私集合求交(Server-Aided PSI)协议介绍:学习

    原文来自:云辅助隐私集合求交(Server-Aided PSI)协议介绍,下面学习一波,并记录一些笔记. 背景 总结: 1.PSI-CA和PSI相比,前者在乎的是交集的大小,后者在乎的是交集本身.另外 ...

  3. PostgreSQL:数据库迁移与版本控制

    title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...

  4. .Net 6 配置日志

    前言   .Net 6 与之前的配置有点不一样了记录下日志配置方式. 当前日志以Serilog为例,.Net 6 的日志由内置的Logger获取,然后可以交给Serilog|NLog等框架处理, 框架 ...

  5. xcode 12.3 mac m1

  6. KUKA库卡机器人常见故障都有哪些解决办法

    如何解决机器人线路板维修查不出故障 在进行机器人电路板维修工作时,有时会遇到查不出故障原因的情况,对于这种故障维修业界称之为疑难杂症,这时维修人员该如何应对呢?在这里向朋友们介绍机器人维修一些解决的方 ...

  7. 【忍者算法】从生活到代码:解密链表大数相加的美妙算法|LeetCode第2题"两数相加"

    从生活到代码:解密链表大数相加的美妙算法 从超市收银说起 想象你是一个超市收银员,正在计算两位顾客的购物总和.每位顾客的商品都按照从个位到高位的顺序摆放(比如54元就是先放4元商品,再放50元商品). ...

  8. cgroup与systemd: 通过src rpm获取systemd源代码,添加日志并使用rpmbuild重新打包

    问题起源 服务跑在富容器中.容器使用init进程作为一号进程,然后用systemd管理所有service. 在做一次升级时,nginx启动脚本有更新,原来是root拉起,现在进行了去root改造,使用 ...

  9. wxpython SetValue 获取列表数据获取不到

    self.m_textCtrl4.SetValue(files) 同样的方法获取其他值就获取到了 ,后来想了想files是列表数据,于是将类型变为str型成功 self.m_textCtrl4.Set ...

  10. Vulnhub-sundown

    总结:该靶机是一个wordpress管理系统,需要信息收集得到插件信息,然后搜索插件漏洞,得到一个文件包含exp,利用其得到一个普通用户,利用hydra爆破密码然后ssh连接,信息收集得到一个数据库配 ...