在开发的过程中我们的对象有着各种各样的关系,比如一对多,多对多,一对一。如学生,和学生证就是一对一的关系。这里我们以这两个对象为例搭建一个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