MyBatis关联映射--一对一关联映射

在开发的过程中我们的对象有着各种各样的关系,比如一对多,多对多,一对一。如学生,和学生证就是一对一的关系。这里我们以这两个对象为例搭建一个MaBatis的一对一关联映射的示例。

1、数据库

2、实体类

1.Student

package com.mvc.demo.pojo;

import java.util.List;

/**
 * 学生类
 * @author hjh
 *
 */
public class Student {
	private Integer id;					//学生id
	private String name;				//姓名
	private String sex;					//性别
	private Integer cardId;				//证件id
	private Card card;					//学生证对象
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Card getCard() {
		return card;
	}
	public void setCard(Card card) {
		this.card = card;
	}
	public Integer getCardId() {
		return cardId;
	}
	public void setCardId(Integer cardId) {
		this.cardId = cardId;
	}
	
	@Override  
    public String toString() {  
        return "Student [id=" + id + ", name=" + name + ", sex=" + sex  + ", cardId=" + cardId+",card="+card+ "]";  
    }
}

2.学生证类

package com.mvc.demo.pojo;

public class Card {
	private Integer cid;		//证件id
	private Integer sid;		//学生id
	private String note;		//证件备注
	public Integer getCid() {
		return cid;
	}
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	public Integer getSid() {
		return sid;
	}
	public void setSid(Integer sid) {
		this.sid = sid;
	}
	public String getNote() {
		return note;
	}
	public void setNote(String note) {
		this.note = note;
	}
	@Override
	public String toString() {
		return "Card [cid=" + cid + ", sid=" + sid +  ", note=" + note + "]";
	}

}

3.用ResultMap实现映射

我们需要写一个学生证映射和学生的映射,学生的映射会用到学生证的映射,我们先来写学生证的映射

<?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.mvc.demo.dao.CardMapper">
	<resultMap type="Card" id="cardMap">
	<id property="cid" column="cid"/>
	<result property="sid" column="sid"/>
	<result property="note" column="note" />
	</resultMap>
 
	<select id="findCardBysid" parameterType="int" resultMap="cardMap">
		select cid,sid,note from Card where sid =#{sid}
	</select>
</mapper>

再来写学生的映射:

<?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.mvc.demo.dao.StudentMapper">
	<resultMap type="Student" id="studentMap">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="sex" column="sex" />
		<result property="cardId" column="card_id" />
		<association property="Card" column="id"
			select="com.mvc.demo.dao.CardMapper.findCardBysid" />
			
	</resultMap>
 
	<select id="getStudent" parameterType="int" resultMap="studentMap">
		select id,name,sex,card_id from Student where id = #{id}
	</select>
	
</mapper>

4、控制层和输出的信息

//学生和学生证一对一关联查询
	@RequestMapping("/getStuInfo")		
	public String getStuInfo(String id){
		//通过级联查询出信息
		Student stu=studentService.getStdentInfo(Integer.parseInt(id));
		System.out.println("the student is :"+stu);
		return "login";
	}

显示:

到这里全部代码就编写完成了,我们查询学生信息时,学生证的信息我们也会一起查出来了

具体的示例代码在:https://download.csdn.net/download/weixin_42189604/10633257

猜你喜欢

转载自blog.csdn.net/weixin_42189604/article/details/82224945