MyBatis一对一、一对多、多对多映射查询

本文详细介绍了MyBatis中的一对一、一对多和多对多关系映射查询。通过使用子元素实现嵌套查询和嵌套结果,讨论了它们的属性配置,如property、column、javaType、select和fetchType,并提供了相关案例。同时,指出嵌套查询可能带来的性能问题,建议考虑使用嵌套结果提高效率。
摘要由CSDN通过智能技术生成

MyBatis在映射文件中加载关联关系对象主要通过两种方式:嵌套查询嵌套结果

嵌套查询是指通过执行另外一条SQL映射语句来返回预期的复杂类型;

嵌套结果是使用嵌套结果映射来处理重复的联合结果的子集;

1、一对一关系使用<resultMap>中的<association>子元素

该元素中包含以下属性:

property:指定映射到的实体类对象属性,与表字段一一对应。

column:指定表中对应的字段。

javaType:指定映射到实体对象属性的类型。

select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。

fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为lazy(延迟加载)。

案例:

1、目前有两张表:tb_idcard表和tb_person表

CREATE TABLE tb_idcard(
	id INT PRIMARY KEY AUTO_INCREMENT,
	CODE VARCHAR(18)
);
CREATE TABLE tb_person(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(32),
	age INT,
	sex VARCHAR(8),
	card_id INT UNIQUE,
	FOREIGN KEY(card_id) REFERENCES tb_idcard(id)	
);

2、定义实体类(使用Lombok简化getters and setters)

@Data
public class IdCard{
	private Integer id;
	private String code;
}

@Data
public class Person {
	private Integer id;
	private String name;
	private Integer age;
	private String sex;
	private IdCard card; //一对一,关联的身份证
}

3、映射文件 IdCardMapper.xml

<mapper namespace="com.lzj.mapper.IdCardMapper">
	<select id="findCodeById" parameterType="Integer" resultType&#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值