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>

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值