一、先放成功的方法
jar包:mybatis-plus-extenaion-3.4.0
<!--引入mybatisplus依赖-->
<dependency>
<groupid>com.baomidou</groupid>
<artifactid>mybatis-plus-boot-starter</artifactid>
<version>3.4.0</version>
</dependency>1.dao层,使用注解方式
用inner join [表名] on [条件]关联多表,用${ew.customsqlsegment}表示wrapper的where条件
public interface wreqmstmapper extends basemapper<wreqmst>{
@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<wreqmst> mlist(ipage<wreqmst> page,@param(constants.wrapper)wrapper<wreqmst>wrapper);
}2.service层
public interface iwreqmstservice extends iservice<wreqmst> {
ipage<wreqmst> getpagelist(wreqmstlistdto pagelistdto);
}这里可以不用lambda(),可以直接new querywrapper<>()来添加条件。
@service
public class wreqmstserviceimpl extends baseservice<wreqmstmapper, wreqmst> implements iwreqmstservice {
private iwreqdtlservice wreqdtlservice;
@resource
private wreqmstmapper getwreqmstmapper;
@override
public ipage<wreqmst> getpagelist(wreqmstlistdto pagelistdto) {
wrapper<wreqmst> wrapper = wrappers.<wreqmst>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<pageoutput<wreqmstlistvo>> getpagelist(wreqmstlistdto listdto) {
ipage<wreqmst> page = wreqmstservice.getpagelist(listdto);
list<wreqmstlistvo> records = beanutil.copylist(page.getrecords(), wreqmstlistvo.class);//分页。wrapper自带
return response.ok(conventpage.getpageoutput(page.gettotal(), records));
}二、未解决
如果不用注解方式,查列表数据和有条件的查数据我没法同时存在,我不知道如何同时实现。
先用association进行了一对一表连接,其他代码和上面一样。但是xml文件按方法只能无条件查询,wrapper加上的条件没有进入xml文件。。。
如果在下面的<select>中加上${ew.customsqlsegment},则可以有条件的查询,但是没有使用wrapper添加条件,则结果为空。
是不是要加上<if test=".....">${ew.customsqlsegment}</if>?
<resultmap id="wreqmstresultmap" type="wreqmst">
<id column="reqmstid" property="reqmstid"/>
<result column="inputdate" property="inputdate"/>
<result column="deptid" property="deptid"/>
<result column="reqwhid" property="reqwhid"/>
<result column="byreqwhid" property="byreqwhid"/>
<result column="memo" property="memo"/>
<association property="deptname" column="deptid" select="com.xjrsoft.module.customertwo.appmanage.gencompany.mapper.gencompanymapper.selectnamebyid"/>
<association property="reqwhname" column="reqwhid" select="com.xjrsoft.module.customertwo.appmanage.genwh.mapper.genwhdefmapper.selectnamebyid"/>
<association property="byreqwhname" column="byreqwhid" select="com.xjrsoft.module.customertwo.appmanage.genwh.mapper.genwhdefmapper.selectnamebyid"/>
</resultmap>
<select id="wreqmstlist" resultmap="wreqmstresultmap">
select *
from w_req_mst
</select>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论