1、重写controller:
要点:
1、将其他查询字符放置在请求参数中
2、将查询对象和其他查询字段放置在map中作为mybatis的查询参数
3、mapper第一个参数必须为page类型,其他字段可以不加@Param参数
4、如果是多个参数直接排列即可,如果是map类型,在xml中需要将对象.属性填写完整
示例:
@AutoLog(value = "测试查询-分页列表查询")
@ApiOperation(value="测试查询-分页列表查询", notes="测试查询-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(TbTestSearch tbTestSearch,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="other1",defaultValue = "") String other1,
HttpServletRequest req) {
//QueryWrapper<TbTestSearch> queryWrapper = QueryGenerator.initQueryWrapper(tbTestSearch, req.getParameterMap());
//Page<TbTestSearch> page = new Page<TbTestSearch>(pageNo, pageSize);
//IPage<TbTestSearch> pageList = tbTestSearchService.page(page, queryWrapper);
//return Result.OK(pageList);
Page<TbTestSearch> page = new Page<TbTestSearch>(pageNo, pageSize);
if (StringUtils.isEmpty(other1)) {
QueryWrapper<TbTestSearch> queryWrapper = QueryGenerator.initQueryWrapper(tbTestSearch, req.getParameterMap());
IPage<TbTestSearch> pageList = tbTestSearchService.page(page, queryWrapper);
return Result.ok(pageList);
} else {
Map map = JSONObject.parseObject(JSONObject.toJSONString(tbTestSearch),Map.class);
map.put("other1", other1);
IPage<TbTestSearch> pageList = tbTestSearchService.pageByOther1(page, map);
return Result.ok(pageList);
}
}
2、mapper文件:
可以使用以下的两种写法
public interface TbTestSearchMapper extends BaseMapper<TbTestSearch> {
IPage<TbTestSearch> pageByOther1(Page<TbTestSearch> page, Map<String,Object> map);
IPage<TbTestSearch> pageByOther1(Page<TbTestSearch> page, String other, String other1);
}
3、xml文件:
注意: 参数写法 map和string的区别,map需要填写完整,在jeecgboot中参数字段类似:【page,map,string,param1,param2】,如果参数是对象,需要在xml中填写完整;例如:
map.other
<select id="pageByOther1" parameterType="Map" resultType="org.jeecg.modules.demo.entity.TbTestSearch">
SELECT *
FROM tb_test_search
WHERE 1=1
<if test="map.other!=null and map.other!=''">
and other = #{map.other}
</if>
<if test="map.other1!=null and map.other1!=''">
and create_by like CONCAT('%',#{map.other1},'%')
</if>
</select>
<!--
<select id="pageByOther1" parameterType="String" resultType="org.jeecg.modules.demo.entity.TbTestSearch">
SELECT *
FROM tb_test_search
WHERE 1=1
<if test="other!=null and other!=''">
and other = #{other}
</if>
<if test="other1!=null and other1!=''">
and create_by like CONCAT('%',#{other1},'%')
</if>
</select> -->
4、页面数据的展示:
如果页面分页列表字段数据不是表中的字段,可以使用注解@TableField来区分,这样就可以在列表中展示了,
/**其他*/
@TableField(exist = false)
@Excel(name = "其他1", width = 15)
@ApiModelProperty(value = "其他1")
private java.lang.String other1;
外键或者字典的显示参考: jeecgboot 列表外键或者指定值状态显示_limonero-CSDN博客