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. python之+=与+(转载)

    先看一个简单的例子 从程序分析,进行直接+操作后,python会重新生成一个对象,而进行+=操作并不改变原来的对象,是在原来对象的基础上进行操作,所以+=也称为就地加 除此之外+和+=还有不同: 从程 ...

  2. day07 元组类型 字典类型 集合

    元组:元组就是一个不可变的列表 1.用途:当我们需要记录多个同种属性的值,并且只有读的需求,没有改的需求,应该用元组. 2.定义方式:在()内用逗号分隔开多个任意类型的元素 t=(‘egon’)#注意 ...

  3. 最长上升子序列(dp)

    链接:https://www.nowcoder.com/questionTerminal/d83721575bd4418eae76c916483493de来源:牛客网 广场上站着一支队伍,她们是来自全 ...

  4. LeetCode(72):编辑距离

    Hard! 题目描述: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换 ...

  5. Linux之man命令详解及中文汉化

    使用方法 Linux man中的man就是manual的缩写,用来查看系统中自带的各种参考手册 使用方法: man command 示例: [root@VM_0_13_centos ~]# man l ...

  6. Oracle logminer 日志挖掘

    Table of Contents 1. LOGMNR简介 2. 创建数据字典 2.1. 外部文件存储数据字典 2.2. redo log 存储数据字典 3. 添加需要分析的文件 4. 开始分析文件 ...

  7. Java生成生成密码类

    import java.util.Date; import java.util.Random; public class PasswordUtil { public final static Stri ...

  8. rsa证书ssh登陆服务器

    好久不用,又生疏了. 今晚实操了一下,作一个记录. 使用rsa的密钥对登陆linux服务器,主要是为了安全. 这种证书级别的登陆,比最复杂的root用户名和帐号的安全性都要高一个等级. 至少服务器不会 ...

  9. springboot调用http方式

    1.httpclient 2.okhttp 3.feign 安装Gradle包 compile 'org.springframework.cloud:spring-cloud-starter-open ...

  10. 一元线性回归与R语言

    (https://mirrors.tuna.tsinghua.edu.cn/CRAN/)下载好R之后打开,就可以输入命令,如下,我输入 > y=c(61,57,58,40,90,35,68)  ...