mybatis-plus自定义sql分页查询
1、TsparamServiceImpl Service里面查询方法
调用baseMapper.selectMyPage2(page, qw);
qw是 QueryWrapper 查询条件
@Override
public PageUtils queryPageByPID(Map<String, Object> params) {
Integer pageIndex = Integer.parseInt((String) params.get("page")); //第几页
Integer limit = Integer.parseInt((String) params.get("limit"));//每页数
QueryWrapper<TsparamEntity> qw = new QueryWrapper<>();
String paramtypeid = (String) params.get("paramtypeid");
if(StringUtils.hasText(paramtypeid)){
qw.eq("t1.paramtypeid",paramtypeid);
}
String key= (String) params.get("key");
if(StringUtils.hasText(key)){
qw.and(w->{
w.eq("t1.pid",key).or().like("t1.pname",key);
});
}
Page<TsparamEntity> page = new Page<>(pageIndex,limit);
IPage<TsparamEntity> mapIPage = this.baseMapper.selectMyPage2(page, qw);
return new PageUtils(mapIPage);
}
2、TsparamDao 添加接口方法 selectMyPage2
@Mapper
public interface TsparamDao extends BaseMapper<TsparamEntity> {
/**
* 自定义sql分页
* @param page
* @param queryWrapper 看这里看这里,如果自定义的方法中需要用到wrapper查询条件,需要这样写
* @return
*/
//IPage<TsparamEntity> selectMyPage(IPage<TsparamEntity> page, @Param(Constants.WRAPPER) Wrapper<TsparamEntity> queryWrapper);
IPage<TsparamEntity> selectMyPage2(IPage<TsparamEntity> page,@Param(Constants.WRAPPER) Wrapper<TsparamEntity> queryWrapper);
}
3、mapper.xml
<select id="selectMyPage2" resultType="com.rdhl.modules.lis.entity.TsparamEntity">
select t1.*,t2.valuename from tsparam t1
left join tsparamvalue t2 on t1.pid=t2.pid and t1.pvalue=t2.valueid
${ew.customSqlSegment}
</select>
${ew.customSqlSegment} 会自动根据qw 和param参数生成where 语句
在qw条件中,我们可以直接使用 表别名.字段名 进行where条件的拼装 如: qw.eq("t1.paramtypeid",paramtypeid);