0. 表结构

1. 准备工作

1.1 配置文件等信息,请参考  myBatis之入门示例

1.2 entity

  1.2.1 TPersonInfo.java

package com.blueStarWei.entity;

public class TPersonInfo {

    private Integer id;
private String name;
private Integer age;
private Address address; //setter & getter @Override
public String toString() {
return "TPersonInfo [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
} }

1.2.2 Address.java

package com.blueStarWei.entity;

public class Address {

    private int id;
private String country;
private String city; //setter & getter @Override
public String toString() {
return "Address [country=" + country + ", city=" + city + "]";
} }

2 一对一关系(Maper)

2.1 方法一:

2.1.1 PersonAddressMapper.java

package com.blueStarWei.mappers;

import java.util.List;

import com.blueStarWei.entity.TPersonInfo;

public interface PersonAddressMapper {

    List<TPersonInfo> findAllWithAddress();
}

2.1.2 PersonAddressMapper.xml

<?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.blueStarWei.mappers.PersonAddressMapper"> <select id="findAllWithAddress" resultMap="personResult">
SELECT t1.*,t2.* FROM t_person_info t1 JOIN t_address t2 ON t2.id = t1.addressid
</select> <resultMap type="TPersonInfo" id="personResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<association property="address" resultMap="addressResult"/>
</resultMap> <resultMap type="Address" id="addressResult">
<id property="id" column="id"/>
<result property="country" column="country"/>
<result property="city" column="city"/>
</resultMap> </mapper>

2.2 方法二【推荐】

2.2.1 AddressMapper.java

package com.blueStarWei.mappers;

import com.blueStarWei.entity.Address;

public interface AddressMapper {

    public Address findById(Integer id);
}

2.2.2 AddressMapper.xml

<?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.blueStarWei.mappers.AddressMapper"> <select id="findById" parameterType="Integer" resultMap="addressResult">
SELECT * FROM t_address t where t.id = #{id}
</select> <resultMap type="Address" id="addressResult">
<id property="id" column="id"/>
<result property="country" column="country"/>
<result property="city" column="city"/>
</resultMap> </mapper>

2.2.3 PersonMapper.java

package com.blueStarWei.mappers;

import java.util.List;

import com.blueStarWei.entity.TPersonInfo;

public interface PersonMapper {

    TPersonInfo findById(Integer id);

    List<TPersonInfo> findAll();
}

2.2.4 PersonMapper.xml

<?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.blueStarWei.mappers.PersonMapper"> <select id="findById" parameterType="Integer" resultMap="personResult">
select * from t_person_info a where a.id = #{id}
</select> <select id="findAll" resultMap="personResult">
select * from t_person_info
</select> <resultMap type="TPersonInfo" id="personResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<association property="address" column="addressid"
select="com.blueStarWei.mappers.AddressMapper.findById"/>
</resultMap> </mapper>

2.3. 总结:

方法一是使用级联的方式查找出需要的所有信息,然后将结果返回到对应的entity类中,方法二是通过外键关联的方式返回结果。方法二在开发过程中被推荐时间,因为其具有代码高复用性。

3 一对多关系

3.1 Family.java

package com.blueStarWei.entity;

import java.util.List;

public class Family {

    private Integer id;
private String familyCode;
private List<TPersonInfo> persons; //setter & getter @Override
public String toString() {
return "Family [id=" + id + ", familyCode=" + familyCode + ", persons=" + persons + "]";
} }

3.2 FamilyMapper.java

package com.blueStarWei.mappers;

import com.blueStarWei.entity.Family;

public interface FamilyMapper {

    Family findById(Integer id);

}

3.3 FamilyMapper.xml

<?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.blueStarWei.mappers.FamilyMapper"> <select id="findById" parameterType="Integer" resultMap="familyResult">
SELECT * FROM t_family t where t.id = #{id}
</select> <resultMap type="Family" id="familyResult">
<id property="id" column="id"/>
<result property="familyCode" column="familyCode"/>
<collection property="persons" column="id" select="com.blueStarWei.mappers.PersonMapper.findByFamilyId"/>
</resultMap> </mapper>

3.4 PersonMapper.java

package com.blueStarWei.mappers;

import java.util.List;

import com.blueStarWei.entity.TPersonInfo;

public interface PersonMapper {

    List<TPersonInfo> findByFamilyId(Integer familyId);
}

3.5 PersonMapper.xml

<?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.blueStarWei.mappers.PersonMapper"> <select id="findByFamilyId" parameterType="Integer" resultMap="personResult">
select * from t_person_info a where a.familyId = #{familyId}
</select> <resultMap type="TPersonInfo" id="personResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<association property="address" column="addressid"
select="com.blueStarWei.mappers.AddressMapper.findById"/>
</resultMap> </mapper>

mybatis之级联关系(一对一、一对多)的更多相关文章

  1. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  2. JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用

    下面把项目中的用户类中有个:一对一  一对多  多对多的注解对应关系列取出来用于学习      说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...

  3. LayUI table表格控件 如何显示 对象中的属性(针对Mybatis的级联查询--一对一情况)

    1.entity如下: 2.Mybatis的Mapper.xml文件如下 <resultMap id="BaseResultMapPlus" type="dicIt ...

  4. MyBatis之级联——一对一关系

    在学数据库概论的时候会听到这么几个词:数据库的关系分为一对一.一对多.多对多.对于在学校里学的知识已经忘得差不多了,在这里简单的提一下数据库的关系.此篇是介绍MyBatis是如何实现数据库中一对一关系 ...

  5. MyBatis之级联——一对多关系

    上次我们讲到了MyBatis的一对一关系的表示,简单回顾一下一对一关系就是一个学生只有一个学生证.那么什么是一对多关系呢?一个学生有多个课程这就是一对多的关系.我们结合上一章中的学生和学生证,在此基础 ...

  6. Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  7. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  8. Mybatis 级联查询 (一对多 )

    后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...

  9. hibernate 一对多(级联关系)

    hibernate 核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiber ...

随机推荐

  1. Confluence 6 下载和安装 Oracle thin 驱动

    基于许可证的考虑,我们不能将 Oracle 的驱动捆绑到 Confluence 中.如果你希望你的 Confluence 能够连接到 Oracle 数据库,你需要: 停止 Confluence. 进入 ...

  2. nginx之访问控制http_access_module与http_auth_basic_module

    http_access_module 作用 基于IP的访问控制 语法 使用 局限性 解决办法 1. http_x_forwarded_for http_auth_basic_module 作用 基于用 ...

  3. 基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)

    情况描述:为了改善页面上的input框太多,采用∧∨折叠展开,这个小东西来控制,第一次做,记录一下ヾ(◍°∇°◍)ノ゙下边是Code 代码: //html代码 <div id="col ...

  4. (批量更新)对多个符合条件的id做更新操作

    需求描述:把checkbox勾选的对应id的记录的标志位置1或0,这个其实不难的,不过我自己做的话,肯定是多次访问数据库做更新,看了老大的代码,发现差距不是一般的大,老大把sql灵活运用,结果一次访问 ...

  5. WPA2-PSK无线密码破解

    无线网络WIFI(wireless Fidelity )正确发音 /wai fai/ 是一个建立在IEEE 802.11标准的无线局域网,目前主流的无线上网模式主要有两种分别是 GRPS(手机无线上网 ...

  6. Little Red Riding Hood

    问题 : Little Red Riding Hood 时间限制: 1 Sec  内存限制: 1280 MB 题目描述 Once upon a time, there was a little gir ...

  7. C语言将字符串转json

    示例代码: #include <stdio.h> #include <string.h> #include <stdlib.h> char *strrpc(char ...

  8. 查看CPU 内存 硬盘 网络 查看进程使用的文件 uptime top ps -aux vmstat iostat iotop nload iptraf nethogs

    #安装命令 yum install  sysstat #包含 iostat vmstat yum install iotop yum install  nload yum install iptraf ...

  9. Github版本管理以及git使用

    1.git客户端编译安装 同步系统时间服务器 ntpdate cn.ntp.org.cn 安装依赖包: [root@baolin ~]# yum install epel-release -y [ro ...

  10. WPF在XAML中实现持续动画的暂停、恢复、停止

    1.动画通过EventTrigger监听按钮的FrameworkElement.Loaded事件,但控件载入时就进行动画, 持续动画通过<BeginStoryboard Name="y ...