mybatis-plus MPJBaseMapper selectJoinOne 用法leftjoin一张表两次添加别名处理

InsteadOrderRespVO insteadOrderRespVO = insteadOrderMapper.selectJoinOne(InsteadOrderRespVO.class,
                new MPJLambdaWrapper<InsteadOrderDO>().selectAll(InsteadOrderDO.class)
                        .selectAs("user1.username", InsteadOrderRespVO::getAnalystName)
                        .leftJoin(AdminUserDO.class, "user1", AdminUserDO::getId, InsteadOrderDO::getAnalystId)
                        .selectAs("user2.username", InsteadOrderRespVO::getPublisherName)
                        .leftJoin(AdminUserDO.class, "user2",AdminUserDO::getId, InsteadOrderDO::getCustomerId)
                        .eq(InsteadOrderDO::getId, id));

这段代码使用了 MyBatis-Plus (MP) 和其扩展功能来从数据库中查询一个 InsteadOrderRespVO 对象。下面是逐行的中文解释:

  1. 创建查询结果对象:

    InsteadOrderRespVO insteadOrderRespVO =
    

    这里创建了一个新的 InsteadOrderRespVO 实例,该实例将被填充从数据库获取的数据。

  2. 调用查询方法:

    insteadOrderMapper.selectJoinOne(
    

    调用 insteadOrderMapperselectJoinOne 方法。这个 insteadOrderMapper 可能是一个自定义的 Mapper,它扩展了 MyBatis-Plus 的基本 Mapper 功能。

  3. 指定返回类型:

    InsteadOrderRespVO.class,
    

    指定查询结果的类型为 InsteadOrderRespVO 类。

  4. 构建查询条件:

    new MPJLambdaWrapper<InsteadOrderDO>()
    

    创建一个新的 MPJLambdaWrapper 实例,允许使用流畅的 Lambda 表达式方式构建复杂的 SQL 查询。

  5. 选择所有列:

    .selectAll(InsteadOrderDO.class)
    

    选择 InsteadOrderDO 表中的所有列。

  6. 左连接获取分析师信息:

    .selectAs("user1.username", InsteadOrderRespVO::getAnalystName)
    .leftJoin(AdminUserDO.class, "user1", AdminUserDO::getId, InsteadOrderDO::getAnalystId)
    

    执行左连接操作,连接 AdminUserDO 表,并将其别名为 “user1”。从 AdminUserDO 表中选择 username 列,并映射到 InsteadOrderRespVOanalystName 属性。连接条件是基于 AdminUserDOidInsteadOrderDOanalystId 匹配。

  7. 左连接获取发布者信息:

    .selectAs("user2.username", InsteadOrderRespVO::getPublisherName)
    .leftJoin(AdminUserDO.class, "user2", AdminUserDO::getId, InsteadOrderDO::getCustomerId)
    

    再次执行左连接操作,连接 AdminUserDO 表,并将其别名为 “user2”。从 AdminUserDO 表中选择 username 列,并映射到 InsteadOrderRespVOpublisherName 属性。连接条件是基于 AdminUserDOidInsteadOrderDOcustomerId 匹配。

  8. 添加等于条件:

    .eq(InsteadOrderDO::getId, id)
    

    添加一个等于条件,查询具有特定 id 的记录。
    最后执行查询并返回结果。

综上所述,这段代码的主要目的是根据提供的 id 查询一个 InsteadOrderRespVO 对象,并在该对象中填充 InsteadOrderDO 的所有字段以及关联的分析师和发布者的用户名。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值