resultMap+collection应用

问题说明

一个部门有很多员工,查询部门及该部门下所有员工

实现

create table DEPARTMENT
(
  id     VARCHAR2(64) default sys_guid() not null,
  branch VARCHAR2(64)
);
create table STAFF
(
  staff_id          VARCHAR2(64) default sys_guid(),
  staff_no          VARCHAR2(64) not null,
  staff_name        VARCHAR2(64),
  staff_gender      VARCHAR2(20),
  staff_in_date     DATE default sysdate,
  del_flag          VARCHAR2(10),
  branch_id         VARCHAR2(64)
)

实体

Department 部门

@Data
@TableName("department")
public class Department {
    @TableId
    private String id;
    private String branch;
    private List<Staff> staffList;
}

Staff 员工

@Data
@TableName("staff")
public class Staff {
    @TableId
    private String id;

    private String branchId;

    private String staffNo;

    private String staffName;

    private String staffGender;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date staffInDate;
}

XML中SQL

    <resultMap id="departmentResultMap" type="com.base.staff.entity.Department">
        <id property="id" column="ID" />
        <result property="branch" column="BRANCH" />
        <collection property="staffList" ofType="com.base.staff.entity.Staff">
            <id property="id" column="STAFF_ID" />
            <result property="staffNo" column="STAFF_NO" />
            <result property="staffName" column="STAFF_NAME" />
            <result property="staffGender" column="STAFF_GENDER" />
            <result property="staffInDate" column="STAFF_IN_DATE" />
            <result property="branchId" column="BRANCH_ID" />
        </collection>
    </resultMap>

    <select id="queryDepartment" resultMap="departmentResultMap">
        SELECT d.id,
            d.branch,
            s.staff_id,
            s.staff_no,
            s.staff_Name,
            s.staff_gender,
            s.staff_in_date,
            s.branch_id
        FROM department d
        LEFT JOIN staff s ON d.id = s.branch_id
        ORDER BY s.staff_id DESC
    </select>

测试

测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值