Mybatis第三讲——关联一对一 (1)

Mybatis第二讲——熟悉使用XML配置SQL映射器

 这讲主要是针对两张表,一张学生信息表t_student,一张地址表t_address:

Mybatis第三讲——关联一对一 (1)

Mybatis第三讲——关联一对一 (1)

t_student中的addressId字段对应于t_address中的id,但是两张表之间并没有物理上的关联。我们只是人为的把字段添加上去了而已。

 

工程结构:

Mybatis第三讲——关联一对一 (1)

与第二讲相比,增加了model下的Address.java 文件:

package com.java1234.model;

public class Address {

	private Integer id;
	private String sheng;
	private String shi;
	private String qu;
	
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getSheng() {
		return sheng;
	}
	public void setSheng(String sheng) {
		this.sheng = sheng;
	}
	public String getShi() {
		return shi;
	}
	public void setShi(String shi) {
		this.shi = shi;
	}
	public String getQu() {
		return qu;
	}
	public void setQu(String qu) {
		this.qu = qu;
	}
	@Override
	public String toString() {
		return "Address [id=" + id + ", sheng=" + sheng + ", shi=" + shi + ", qu=" + qu + "]";
	}
	
	
}

StudentMapper.java中新增接口:

Mybatis第三讲——关联一对一 (1)

 

StudentMapper.xml中新增如下代码段:

<resultMap type="Address" id="addressResult">
	 <result property="id" column="id"/>
		<result property="sheng" column="sheng"/>
		<result property="shi" column="shi"/>
		<result property="qu" column="qu"/> 
	</resultMap>
	
	<resultMap type="Student" id="StudentResult">
		<id property="id" column="id"/>
		<result property="name" column="name"/>
		<result property="age" column="age"/>
		
		<!-- <result property="address.id" column="addressId"/>
		<result property="address.sheng" column="sheng"/>
		<result property="address.shi" column="shi"/>
		<result property="address.qu" column="qu"/> -->
		
		<association property="address" resultMap="addressResult"/>
	</resultMap> 
	
	<select id="getAllStudents" resultMap="StudentResult">
	select * from t_student 
	</select>
	
	<select id="findStudentWithAddress" resultMap="StudentResult" parameterType="Integer">
	select * from t_student t1,t_address t2 where t1.addressId=t2.id and t2.id=#{id} 
	</select>

测试:

Mybatis第三讲——关联一对一 (1)

输出结果:

Mybatis第三讲——关联一对一 (1)