MyBatis查询实体类并将实体类引用的其他类查询出来

问题描述:

数据库中有两张表——员工表和部门表,对应于两个实体类Employee和Department。由于每个员工必有一个部门,所以Employee中需要引用Department。

一开始想着MyBatis中要求实体类的属性和数据库表的字段对应,Employee里用的是Department的id,但这样会导致最后前端显示也只是显示部门id(后端如果再用id去查部门名也能实现,但比较麻烦了)。

后面改用Employee里直接用Department对象,然而不知道EmployeeMapper.xml该如何去写SQL,经过各种搜索找到了答案。

解决方法

先通过联表查询,查询出department表和employee表中所需信息,再通过别名,将department表中查出的字段名改为Department类的属性名。

 

实体类

Employee

package com.zcy.pojo;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
public class Employee {
    private int id;
    private String name;
    private String email;
    private int gender;//女0,男1
    private Department department;
    private Date birthday;
}

 

Department

package com.zcy.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
    private int id;//部门ID
    private String name;//部门名称
}

 

MyBatis中的SQL

<select id="queryAllEmployee" resultType="employee">
    select
    a.id, a.name, a.email, a.gender,
    b.id "department.id",
    b.name "department.name",
    birthday
    from employee a
    inner join department b
    where a.department_id = b.id;
</select>

结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老板来碗小面加蛋~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值