mybatisPlus+多表联查+多条件分页查询(一对一,一对多分页) 您所在的位置:网站首页 mybatisplus连表分页 mybatisPlus+多表联查+多条件分页查询(一对一,一对多分页)

mybatisPlus+多表联查+多条件分页查询(一对一,一对多分页)

2024-01-04 03:44| 来源: 网络整理| 查看: 265

mybatisPlus+多表联查+多条件分页查询 为什么会写这篇文章?自定义mapper自定义mapper映射文件定义接口service定义service接口实现类

为什么会写这篇文章?

分页插件在分页时处理一对多的结构的情况时,总条数与实际条数不匹配。这时候需要自定义sql分页查询语句来实现一对多分页条件查询。希望能帮到你!

自定义mapper package com.minglei.hotnews.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderDetailDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadParam; import javafx.scene.control.Pagination; import org.apache.ibatis.annotations.Param; import java.util.List; public interface ClientuserCustomMapper { /** * 根据工单ID获取详情 * @param workOrderId * @return */ WorkOrderDetailDto loadWorkOrderDetailDto(Long workOrderId); // List loadWorkOrderDetails(WorkOrderLoadParam para); /** * 多条件分页显示工单 * @param para * @return */ List loadWorkOrderDetails(WorkOrderLoadParam para); /** * 多条件分页显示工单的工单数量 * @param param * @return */ Integer loadWorkOrderDetailsCount(WorkOrderLoadParam param); /** * 多条件分页显示工单 * * @param page * @param param * @return */ List loadWorkOrder(Page page, @Param("param") WorkOrderLoadParam param); } 自定义mapper映射文件 select w.id as id, w.addtime as addtime, w.ordernum as ordernum, w.shop_id as shop_Id, s.id as shopId, s.shopname as shopname, s.address as address, wlog.Id as logId, wlog.memo as memo, wlog.addtime as logaddtime from workorder as w left JOIN shop as s ON w.shop_id=s.id LEFT JOIN workoderlog as wlog ON w.id=wlog.workorder_id WHERE w.id=#{workOrderId,jdbcType=BIGINT} select w.id as id, w.addtime as addtime, w.ordernum as ordernum, w.shop_id as shop_Id, s.id as shopId, s.shopname as shopname, s.address as address, wlog.Id as logId, wlog.memo as memo, wlog.addtime as logaddtime from workorder as w left JOIN shop as s ON w.shop_id=s.id LEFT JOIN workoderlog as wlog ON w.id=wlog.workorder_id and w.ordernum like concat('%',#{OrderNum},'%') and s.shopname like concat('%',#{ShopName},'%') and w.id in(select temp.id from( select distinct childw.id id from workorder childw LEFT JOIN shop childs ON childw.shop_id=childs.id and childw.ordernum like concat('%',#{OrderNum},'%') and childs.shopname like concat('%',#{ShopName},'%') limit #{PageNum},#{PageSize}) as temp) select count(temp.id) from( select distinct childw.id id from workorder childw LEFT JOIN shop childs ON childw.shop_id=childs.id and childw.ordernum like concat('%',#{OrderNum},'%') and childs.shopname like concat('%',#{ShopName},'%') ) as temp select w.id as id, w.addtime as addtime, w.ordernum as ordernum, w.shop_id as shop_Id, s.id as shopId, s.shopname as shopname, s.address as address from workorder as w left JOIN shop as s ON w.shop_id=s.id and w.ordernum like concat('%',#{param.OrderNum},'%') and s.shopname like concat('%',#{param.ShopName},'%') ORDER BY w.id 定义接口service package com.minglei.hotnews.service.WorkOrderService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderDetailDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadParam; import java.util.List; import java.util.Map; /** * 工单service */ public interface IWorkOrderLoadService { /** * 多条件分页显示工单 * @param param * @return */ // List loadWorkOrder(WorkOrderLoadParam param); Map loadWorkOrder(WorkOrderLoadParam param); /** * 使用mp自带分页查询工单 * @param param * @return */ Page loadWorkOrderCustom(WorkOrderLoadParam param); } 定义service接口实现类 package com.minglei.hotnews.service.WorkOrderService.Impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderDetailDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadDto; import com.minglei.hotnews.mapper.ClientUserCustomDto.WorkOrderLoadParam; import com.minglei.hotnews.mapper.ClientuserCustomMapper; import com.minglei.hotnews.service.WorkOrderService.IWorkOrderLoadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; @Component public class WorkOrderLoadService implements IWorkOrderLoadService { @Autowired ClientuserCustomMapper clientuserCustomMapper; /** * 多条件分页显示工单 * * @param param * @return */ @Override public Map loadWorkOrder(WorkOrderLoadParam param) { Map workOrderRes=new HashMap(); Integer aLong = clientuserCustomMapper.loadWorkOrderDetailsCount(param); workOrderRes.put("total",aLong); List workOrderDetailDtos = clientuserCustomMapper.loadWorkOrderDetails( param); workOrderRes.put("list",workOrderDetailDtos); return workOrderRes; } /** * 使用mp自带分页查询工单 * * @param param * @return */ @Override public Page loadWorkOrderCustom(WorkOrderLoadParam param) { Page page=new Page(param.PageNum,param.PageSize); List workOrderLoadDtos = clientuserCustomMapper.loadWorkOrder(page, param); return page.setRecords(workOrderLoadDtos); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有