mybatis-plus-join-boot-starter selectAssociation 指定字段
在使用mybatis-plus-join-boot-starter selectAssociation方法时,由于有时候需要指定字段,这时候如果用select指定关联表的字段是无效的,经过一番摸索,以下方法亲测有效,代码仅供参考,缺少一些注解和代码(因为懒,勿喷)
class UserDO 映射用户表的实体
public class UserDO {
private Long id;
private String name;
private String mobile;
private String avatar;
}
class OrderDO 映射订单表的实体
public class OrderDO {
private Long id;
private Long userId;
private String userName;
private String orderNO;
private String price;
private String payPrice;
}
class UserOrderDO 这里是关键,用户订单的实体,只要order表想要的字段,用于字段限制,指定想要的字段,从返回的结果来看,虽然返回的还是OrderDO,但是查看生成的SQL可以看到,字段是做了限制了
public class UserOrderDO{
private Long id;
private String orderNO;
}
class UserWithOrderDO,继承映射用户表的实体,拓展用户订单的实体
public class UserWithOrderDO extends UserDO {
private UserOrderDO userOrder;
}
查询
MPJLambdaWrapperX<UserDO> query = new MPJLambdaWrapperX<>();
query.selectAssociation(Order.class,UserWithOrderDO::getUserOrder) // 用订单实体来填充用户订单实体
.leftJoin(Order.class,Order::getId,UserDO::getOrderId);// 关联条件