引入依赖
<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
.innerJoin(SalesReturns.class,SalesReturns::getOrderId,SalesOrder::getOrderId);
innerjoin leftjoin rightjoin后的实体类型与第一个字段保持一致
@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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南