引入依赖
<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; } }