SpringBoot整合Mybatis之一对一查询

背景

  在学校大三下学期的软件建模课程的期末考核大作业中,我选择了基于SpringBoot的宿舍管理系统。因为这门课重点在于UML,所以代码实现只要有基本的CRUD即可,我在数据库设计中,选择了三张表,分别是学生表、宿舍楼表和宿舍管理员表。宿舍楼和学生的关系是一对多的关系,在查询时可以选择隐式内连接方式

实现

  我个人的习惯是先写sql然后实现代码。在这个项目中我采用的是使用xml文件来实现。
先上sql:

	SELECT s.sid,s.`name`,s.gender,s.did,d.dname 
    FROM student s,dormitory d
    WHERE s.did = d.did

再上实体类代码,这里有个注意点,当你想进行一对一查询时,需要在多(数据表关系中为多的一方)的那个实体类中加入类型为一(数据表关系中为1的一方)的成员变量,并且设置get/set方法,代码如下:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student implements Serializable {
    private Integer sid;
    private String name;
    private String gender;
    private Integer did;
    //因为使用了lombok所以不用自己写get/set方法
    private Dormitory dormitory;
}

接着开始写controller层、service层、mapper层和xml的代码(因为比较简单这里就只给xml的代码了):

 <resultMap id="stuBedsMap" type="com.laoye.pojo.Student">
        <id property="sid" column="sid"></id>
        <result property="name" column="name"></result>
        <result property="gender" column="gender"></result>
        <result property="did" column="did"></result>
		<!-- 在进行多表查询时需要使用associatio,
		property属性表示我们加入关系为一的那个成员变量的名称;
		column属性表示通过哪个属性连接这两张表;
		javaType属性表示要封装的关系为一的那个类
		 -->
        <association property="dormitory" column="did" javaType="com.laoye.pojo.Dormitory">
            <result property="dName" column="dname"></result>
        </association>

    </resultMap>

    <select id="findAllStu" resultMap="stuBedsMap">
        SELECT s.sid,s.`name`,s.gender,s.did,d.dname
        FROM student s,dormitory d
        WHERE s.did = d.did
    </select>

配置完就能够进行一对一查询了,展示一下我的结果:
在这里插入图片描述
如果哪些地方叙述的不正确还请各位批评指正.

猜你喜欢

转载自blog.csdn.net/TreeCode/article/details/106964868