Mybatis

您所在的位置:网站首页 querywrapper多表联合查询 Mybatis

Mybatis

2023-06-10 20:32| 来源: 网络整理| 查看: 265

一.先放成功的方法

jar包:mybatis-plus-extenaion-3.4.0

com.baomidou mybatis-plus-boot-starter 3.4.0

1.DAO层,使用注解方式。用inner join [表名] on [条件]关联多表,用${ew.customSqlSegment}表示wrapper的where条件

public interface WReqMstMapper extends BaseMapper{ @Select("SELECT mst.*,wh1.whname as REQWHNAME,wh2.whname as BYREQWHNAME ,comp.companyname as DEPTNAME FROM w_req_mst mst inner join gen_company comp on mst.deptid=comp.companyid left join gen_wh_def wh1 on mst.reqwhid=wh1.whid inner join gen_wh_def wh2 on mst.byreqwhid=wh2.whid ${ew.customSqlSegment}") IPage mlist(IPage page,@Param(Constants.WRAPPER)Wrapperwrapper); }

 2.Service层

public interface IWReqMstService extends IService { IPage getPageList(WReqMstListDto pageListDto); }

 这里可以不用lambda(),可以直接new QueryWrapper()来添加条件。

@Service public class WReqMstServiceImpl extends BaseService implements IWReqMstService { private IWReqDtlService wReqDtlService; @Resource private WReqMstMapper getWReqMstMapper; @Override public IPage getPageList(WReqMstListDto pageListDto) { Wrapper wrapper = Wrappers.query().lambda() .like(!StringUtil.isEmpty(pageListDto.getHISREQNO()), WReqMst::getHisreqno, pageListDto.getHISREQNO()) .ge(!StringUtil.isEmpty(pageListDto.getINPUTDATE_Start()), WReqMst::getInputdate, DateTimeUtil.minForTime(pageListDto.getINPUTDATE_Start(), "datetime")) .le(!StringUtil.isEmpty(pageListDto.getINPUTDATE_End()), WReqMst::getInputdate, DateTimeUtil.maxForTime(pageListDto.getINPUTDATE_End(), "datetime")) .eq(!StringUtil.isEmpty(pageListDto.getREQTYPE()), WReqMst::getReqtype, pageListDto.getREQTYPE()); return getWReqMstMapper.mlist(ConventPage.getPage(pageListDto), wrapper);//this.page(ConventPage.getPage(pageListDto), wrapper); } }

3.controller层 

@GetMappin public Response getPageList(WReqMstListDto listDto) { IPage page = wReqMstService.getPageList(listDto); List records = BeanUtil.copyList(page.getRecords(), WReqMstListVo.class);//分页。wrapper自带 return Response.ok(ConventPage.getPageOutput(page.getTotal(), records)); } 二.未解决

如果不用注解方式,查列表数据和有条件的查数据我没法同时存在,我不知道如何同时实现。

先用association进行了一对一表连接,其他代码和上面一样。但是xml文件按方法只能无条件查询,wrapper加上的条件没有进入xml文件。。。

如果在下面的中加上${ew.customSqlSegment},则可以有条件的查询,但是没有使用wrapper添加条件,则结果为空。

是不是要加上${ew.customSqlSegment}?

select * from w_req_mst



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3