博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis学习笔记(四)一多一关系
阅读量:3529 次
发布时间:2019-05-20

本文共 3122 字,大约阅读时间需要 10 分钟。

Student中包含Address

package com.skymr.mybatis.model;public class Student {	private int id;		private String name;		private int age;		private Address address;		/**	 * 必须要有无参构造器,有参构造器可有可无(至少我测试时是这样)	 * 如果没有无参构造器,只有有参构造器,会报错	 */	public Student() {	}	public Student(String name, int age) {		this.name = name;		this.age = age;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}		public Address getAddress() {		return address;	}	public void setAddress(Address address) {		this.address = address;	}	public String toString(){		return "["+name+","+age+","+address+"]";	}	}
package com.skymr.mybatis.model;public class Address {	//省	private String province;	//市	private String city;	//区	private String region;		private int id;	public String getProvince() {		return province;	}	public void setProvince(String province) {		this.province = province;	}	public String getCity() {		return city;	}	public void setCity(String city) {		this.city = city;	}	public String getRegion() {		return region;	}	public void setRegion(String region) {		this.region = region;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}		public String toString(){		return "[" + id+","+this.province+","+this.city+","+this.region+"]";	}}
package com.skymr.mybatis.mappers;import java.util.List;import com.skymr.mybatis.model.Student;public interface StudentMapper {	public Student getStudent(int id);		public List
getAllStudents(); //取得所有学生,带地址 public List
getAllStudentsWithAddr(); //取得学生,带地址 public Student getStudentWithAddr(int id);}

方式一:对象集联

这种方式不太好,重用性差.

方式二:

将Address独立出来,然后使用association关联到Address的resultMap

方式三:

方式四:推荐的方式

这种方式还是主要是应用association标签

首先,为Address类加入AddressMapper类与AddressMapper.xml

package com.skymr.mybatis.mappers;import com.skymr.mybatis.model.Address;public interface AddressMapper {	public Address getAddress(int id);}
其次,修改StudentMapper.xml

使用了association标签,定义column与select属性

column: 传入mybatis_Student表的外键address_id.

select: 调用AddressMapper的getAddress方法

推演过程:查询一条student数据,再根据address_id查询address表的一条数据.

思考:不知道可不可以这样想,如果查询1000条student,再分别查address表的1000条数据,这样查询次数就是1001次了,不影响性能吗?

转载地址:http://dnihj.baihongyu.com/

你可能感兴趣的文章
git本地仓库和远程仓库关联,分支重命名
查看>>
js对象的深拷贝,你真的觉得很简单吗?
查看>>
你真的了解map方法吗?手动实现数组map方法。
查看>>
带你手动实现call方法,让你收获满满
查看>>
前端知识体系
查看>>
查找入职员工时间排名倒数第三的员工所有信息
查看>>
使用join查询方式找出没有分类的电影id以及名称
查看>>
Qt教程(2) : Qt元对象系统
查看>>
驱动开发误用指针错误:Unable to handle kernel NULL pointer dereference at virtual address
查看>>
Linux部署DocSystem知识/文件管理系统
查看>>
Centos7开机自启动脚本无法使用备用方案
查看>>
jvm虚拟机内存详解
查看>>
线程的创建方式
查看>>
DNS是什么
查看>>
mapreduce自定义分组、自定义分区、二次排序
查看>>
Hbase架构
查看>>
spark运行模式
查看>>
PaddleX的C++使用
查看>>
MyBatis-Plus代码生成器
查看>>
我的第一个SpringBoot项目(一)
查看>>