mybatisPlus联表查询

发布时间 2023-03-31 19:44:58作者: 小贤看世界

引入依赖

<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join</artifactId>
    <version>1.2.4</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

 

修改Mapper

以往在使用myatis-plus的时候,我们的Mapper层接口都是直接继承的BaseMapper,使用mpj后需要对其进行修改,改为继承MPJBaseMapper接口。

用了mapper的全局扫描mapperscan注解

public interface SalesOrderMapper extends MPJBaseMapper<SalesOrder> {
}

查询

Mapper接口改造完成后,我们把它注入到Service中,虽然说我们要完成3张表的联表查询,但是以SalesOrder作为主表的话,那么只注入这一个对应的SalesOrderMapper就可以,非常简单。

service

@Service
public class SalesRejectionReasonServiceImpl extends ServiceImpl<SalesRejectionReasonMapper, SalesRejectionReason> implements SalesRejectionReasonService {

    @Autowired
    private SalesOrderMapper salesOrderMapper;

    @Override
    public PageResult<SalesOrderVo> findByPage(ReturnsCriteria returnsCriteria) {
        PageHelper.startPage(returnsCriteria.getCurrentPage(),returnsCriteria.getPageSize());

        MPJLambdaWrapper<SalesOrder> wrapper = new MPJLambdaWrapper<>();
        wrapper.selectAll(SalesOrder.class)
                .select(SalesReturns::getRejectionReason,SalesReturns::getRejectionDate)
                .innerJoin(SalesReturns.class,SalesReturns::getOrderId,SalesOrder::getOrderId);

        //添加查询条件
        //订单编号
        wrapper.eq(!StringUtils.isEmpty(returnsCriteria.getOrderId()),
                SalesOrder::getOrderId,returnsCriteria.getOrderId());
        //拒收原因
        if(!StringUtils.isEmpty(returnsCriteria.getRejectionReason())&&!returnsCriteria.getRejectionReason().equals("全部")){
            wrapper.eq(SalesReturns::getRejectionReason,returnsCriteria.getRejectionReason());
        }
        //下单日期
        if(!StringUtils.isEmpty(returnsCriteria.getStartTime())&&!StringUtils.isEmpty(returnsCriteria.getEndTime())){
            wrapper.between(SalesOrder::getOrderDate,returnsCriteria.getStartTime(),returnsCriteria.getEndTime());
        }

        List<SalesOrderVo> salesOrderVos = salesOrderMapper.selectJoinList(SalesOrderVo.class, wrapper);

        PageInfo<SalesOrderVo> salesOrderPageInfo = new PageInfo<>(salesOrderVos);
        long total = salesOrderPageInfo.getTotal();

        PageResult<SalesOrderVo> orderPageResult = new PageResult<>();
        orderPageResult.setTotal(total);
        orderPageResult.setDataList(salesOrderVos);

        return orderPageResult;

    }
}