Mybatis嵌套查询(一对多)

这篇具有很好参考价值的文章主要介绍了Mybatis嵌套查询(一对多)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、返回数据Java类

@Data
public class PersonnelDetailsVO{
    /**
     * 主键
     */
    @Column(name = "ID", length = 36, precision = 0)
    private String id;
    
    /**
     * 人员姓名
     */
    @Column(name = "OPERATE_NAME", length = 36, precision = 0)
    private String operateName;
    
    /**
     * 单位id
     */
    @Column(name = "UNIT_ID", length = 36, precision = 0)
    private String unitId;
    
    /**
     * 单位名称
     */
    @Column(name = "UNIT_NAME", length = 36, precision = 0)
    private String unitName;
    
    /**
     * 身份证号
     */
    @Column(name = "IDCARD", length = 40, precision = 0)
    private String idcard;
    
    /**
     * 人员照片附件id
     */
    @Column(name = "PHOTO_ATT", length = 36, precision = 0)
    private String photoAtt;
    
    /**
     * 联系电话
     */
    @Column(name = "PHONE", length = 20, precision = 0)
    private String phone;
    
    /**
     * 人员状态
     */
    private String operStatus;
    
    /**
     * 进场时间
     */
    private Timestamp inTime;
    
    /**
     * 退场时间
     */
    private Timestamp outTime;
    
    /**
     * 人员类型id
     */
    private String personTypeId;
    
    /**
     * 人员类型名称
     */
    private String personTypeName;
    
    /**
     * 项目部/班组ID
     */
    private String teamId;
    
    /**
     * 项目部/班组名称
     */
    private String teamName;
    
    /**
     * 证书信息列表
     */
    private List<OperCertificateVO> certificateList;
    
    /**
     * 履历列表
     */
    private List<OperResumeVO> resumeList;
    
    /**
     * 黑名单列表
     */
    private List<OperBlacklistVO> blacklists;
}

二、Mybatis代码

	<resultMap id="personnelDetailsMap" type="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.PersonnelDetailsVO">
        <id column="ID" property="id"/>
        <result column="OPERATE_NAME" property="operateName"/>
        <result column="UNIT_ID" property="unitId"/>
        <result column="UNIT_NAME" property="unitName"/>
        <result column="IDCARD" property="idcard"/>
        <result column="PHOTO_ATT" property="photoAtt"/>
        <result column="PHONE" property="phone"/>
        <result column="OPER_STATUS" property="operStatus"/>
        <result column="IN_TIME" property="inTime"/>
        <result column="OUT_TIME" property="outTime"/>
        <result column="PERSON_TYPE_ID" property="personTypeId"/>
        <result column="PERSON_TYPE_NAME" property="personTypeName"/>
        <result column="TEAM_ID" property="teamId"/>
        <result column="TEAM_NAME" property="teamName"/>
        <collection property="certificateList" ofType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperCertificateVO" javaType="list" column="id"
                    select="selectCertificateListByOperateId"/>
        <collection property="resumeList" ofType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperResumeVO" javaType="list" column="id"
                    select="selectResumeListByOperateId"/>
        <collection property="blacklists" ofType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperBlacklistVO" javaType="list" column="id"
                    select="selectBlacklistsByOperateId"/>
    </resultMap>

    <select id="queryPersonnelDetails" resultMap="personnelDetailsMap" parameterType="java.util.List">
        select T1.ID,
               T1.OPERATE_NAME,
               T1.UNIT_ID,
               T1.UNIT_NAME,
               T1.IDCARD,
               T1.PHOTO_ATT,
               T1.PHONE,
               T2.OPER_STATUS,
               T2.IN_TIME,
               T2.OUT_TIME,
               T2.PERSON_TYPE_ID,
               T2.PERSON_TYPE_NAME,
               T2.TEAM_ID,
               T2.TEAM_NAME
        from XMXL_WL_OPER_ITEM T1
            left join XMXL_WL_PRO_OPER T2 on T1.ID = T2.OPERATE_ID
        where
            T1.ID IN
            <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        order by T1.CREATE_TIME DESC
    </select>

    <select id="selectCertificateListByOperateId" resultType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperCertificateVO" parameterType="java.lang.String">
        select T1.ID                     AS id,
               T1.OPERATE_ID             AS operateId,
               T1.CERTIFICATE_ATT_ID    AS certificateAttId,
               T1.CERTIFICATE_TYPE      AS certificateType,
               T1.CERTIFICATE_NAME      AS certificateName,
               T1.CERTIFICATE_UNIT      AS certificateUnit,
               T1.ISSUANCE_DATE          AS issuanceDate,
               T1.EFFECTIVE_DATE         AS effectiveDate,
               T1.CREATOR_ID             AS creatorId,
               T1.UPDATOR_ID             AS updatorId,
               T1.CREATE_TIME            AS createTime,
               T1.UPDATE_TIME            AS updateTime
        from XMXL_WL_OPER_CERTIFICATE T1
        where T1.OPERATE_ID = #{id}
        order by T1.CREATE_TIME DESC
    </select>

    <select id="selectResumeListByOperateId" resultType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperResumeVO" parameterType="java.lang.String">
        select T1.ID                     AS id,
               T1.OPERATE_ID             AS operateId,
               T1.RESUME_IN_TIME         AS resumeInTime,
               T1.RESUME_OUT_TIME        AS resumeOutTime,
               T1.RESUME_PRO_NAME        AS resumeProName,
               T1.RESUME_SINGLE_PRO_NAME AS resumeSingleProName,
               T1.RESUME_PERSONNEL_TYPE  AS resumePersonnelType,
               T1.RESUME_PRO_STATUS      AS resumeProStatus,
               T1.CREATOR_ID             AS creatorId,
               T1.UPDATOR_ID             AS updatorId,
               T1.CREATE_TIME            AS createTime,
               T1.UPDATE_TIME            AS updateTime
        from XMXL_WL_OPER_RESUME T1
        where T1.OPERATE_ID = #{id}
        order by T1.CREATE_TIME DESC
    </select>

    <select id="selectBlacklistsByOperateId" resultType="com.mdxc.zhgd.overview.personnelmanage.personnelmanageapi.model.OperBlacklistVO" parameterType="java.lang.String">
        select T1.ID                          AS id,
               T1.OPERATE_ID                  AS operateId,
               T1.BLACKLIST_PRO_NAME          AS blacklistProName,
               T1.BLACKLIST_SINGLE_PRO_NAME   AS blacklistSingleProName,
               T1.BLACKLIST_BID_NAME          AS blacklistBidName,
               T1.KEEPOUT_DATE                AS keepoutDate,
               T1.KEEPOUT_EFFECTIVE_DATE      AS keepoutEffectiveDate,
               T1.KEEPOUT_REASON              AS keepoutReason,
               T1.CREATOR_ID                  AS creatorId,
               T1.UPDATOR_ID                  AS updatorId,
               T1.CREATE_TIME                 AS createTime,
               T1.UPDATE_TIME                 AS updateTime
        from XMXL_WL_OPER_BLACKLIST T1
        where T1.OPERATE_ID = #{id}
        order by T1.CREATE_TIME DESC
    </select>

文章来源地址https://www.toymoban.com/news/detail-623745.html

到了这里,关于Mybatis嵌套查询(一对多)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis使用collection嵌套查询

        在开发中,可能会遇到一对多的关系,这个时候,一条sql语句就难以胜任这个任务了。只能先执行一条sql,然后根据返回的结果,再做一次sql关联查询,这个时候,使用mybatis的collection就可以实现。     如果第一次查询返回的是一个list集合,那么,后续的查询就是一个

    2023年04月12日
    浏览(31)
  • Java后端开发——Mybatis实验

    1.创建工程 在Eclipse中,创建名称为mybatis的工程 2.引入相关依赖 3.数据库准备 4.编写数据库连接信息配置文件 在项目的src目录下创建数据库连接的配置文件,这里将其命名为db.properties,在该文件中配置数据库连接的参数。 5.创建POJO实体 在项目的src/main/java目录下创建com.java

    2024年01月24日
    浏览(48)
  • Mybatis Plus一对多联表查询及分页解决方案

    查询用户信息列表,其中包含用户对应角色信息,页面检索条件有根据角色名称查询用户列表; 一个用户对应多个角色,用户信息和角色信息分表根据用户id关联存储,用户和角色一对多进行表连接查询, 创建对应表: 对应实体类: 在使用一对多连接查询并且分页时,发现

    2023年04月11日
    浏览(50)
  • MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 com.github.dreamyoung mprelation 0.0.3.2-RELEASE 注解工具使用优缺点: 优点: 使用简单,通过在实体类上添加@OneToOne / @OneToMany / @ManyToOne / @ManyToM

    2024年01月20日
    浏览(55)
  • Java企业级开发学习笔记(2.1)MyBatis实现简单查询

    零、创建数据库与表 在Navicat里创建MySQL数据库testdb 创建用户表 - t_user CREATE TABLE t_user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) DEFAULT NULL, age int(11) DEFAULT NULL, address varchar(255) DEFAULT NULL, PRIMARY KEY ( id ) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 执行SQL语句来创建用户表 INSERT IN

    2024年02月09日
    浏览(87)
  • Java后端05(初识MyBatis)

    mybatis配置文件(XML配置文件) user.xml(实现增删改查的sql语句) 使用做sql查询(Test) 配置文件(⭐注意:每一个配置文件都需要在 mybatis-config.xml 中进行注册!!!!!!!!!) 测试类 配置文件(⭐注意:每一个配置文件都需要在 mybatis-config.xml 中进行注册!!!!!!

    2024年02月14日
    浏览(36)
  • 解决mybatis,sql后端查询成功但postman测试返回的data却为null,空问题

     查询成功,但是postman测试返回data为空 这时到后端查看mybatis查询情况却发现查询成功返回数据正常 排查问题发现实际上是实体类中没有查询返回结果中的 “SUM(pricesum)” getset方法 在sql查询中修改:   重启后端之后,此时同样的get请求查询sum返回已经正确封装在data中  到

    2024年02月09日
    浏览(51)
  • [Mybatis的一对一和一对多]

    目录  🎂前言:  🎂一对一关联查询:  🎂一对多关联查询:  🎂 下面是上面代码中所涉及到的实体类结构设计:  🎂一对一关联查询:  🎂用户实体类(User):  🎂用户详情实体类(UserDetail):  🎂一对多关联查询:  🎂订单实体类(Order):  🎂订单详情实体类

    2024年02月12日
    浏览(44)
  • 【JavaWeb后端开发-第五章(2)】Mybatis 进阶学习

    学习完mybatis入门后,我们继续学习mybatis基础操作。 需求说明:     根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询     根据主键ID查询     条件查询 新增

    2024年02月01日
    浏览(48)
  • 后端项目开发:分页功能的实现(Mybatis+pagehelper)

    分页查询是项目中的常用功能,此处我们基于Mybatis对分页查询进行处理。 引入分页依赖 在http目录下,新建PageResult类,我们用此类包装分页结果。

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包