MybatisPlus多条件查询并分页
程序员文章站
2024-03-02 08:05:46
...
需求
输入任意字段进行查询,如果字段为空,则忽略该字段,并分页输出。
阶段一
public Result findMulti(String name, String sex, String position, String phone, Integer department_id, Integer now_page, Integer num) {
HashMap<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("sex", sex);
map.put("position", position);
map.put("phone", phone);
map.put("department_id", department_id);
List<Employee> employees = employeeService.listByMap(map);
//这里统一了结果封装
return Result.succ(employees);
}
结果
无法查询。为空的字段会进行IS Null
条件匹配。
阶段二
public Result findMulti(String name, String sex, String position, String phone, Integer department_id, Integer now_page, Integer num) {
HashMap<String, Object> map = new HashMap<>();
if(name != null) map.put("name",name);
if (sex != null) map.put("sex", sex);
if (position != null) map.put("position", position);
if (phone != null) map.put("phone", phone);
if (department_id != null) map.put("department_id", department_id);
List<Employee> employees = employeeService.listByMap(map);
//这里统一了结果封装
return Result.succ(employees);
}
结果
可以根据输入的参数,如果参数为空,则忽略该参数。但是不能实现分页。
分页阶段一
public Result findMulti(String name, String sex, String position, String phone, Integer department_id, Integer now_page, Integer num) {
HashMap<String, Object> map = new HashMap<>();
if(name != null) map.put("name",name);
if (sex != null) map.put("sex", sex);
if (position != null) map.put("position", position);
if (phone != null) map.put("phone", phone);
if (department_id != null) map.put("department_id", department_id);
QueryWrapper<Employee> wrapper = new QueryWrapper<>();
wrapper.allEq(map);
Page<Employee> page = new Page<>(now_page,num);
Page<Employee> pageOut = employeeService.page(page,wrapper);
//这里统一了结果封装
return Result.succ(pageOut);
}
结果
也可以实现多条件查询,自动忽略为空的字段,但还是有很多if判断语句。
分页阶段二
MybatisPlus官网对条件构造器allEq的说明
allEq(Map<R, V> params)
allEq(Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, Map<R, V> params, boolean null2IsNull)
全部eq或个别isNull
个别参数说明:
params
:key
为数据库字段名,value
为字段值
null2IsNull
: 为true
则在map
的value
为null
时调用 isNull 方法,为false
时则忽略value
为null
的
所以可以将wrapper.allEq(map, false)
中的null2IsNull
置为false
来达到上面方法的同样效果。
public Result findMulti(String name, String sex, String position, String phone, Integer department_id, Integer now_page, Integer num) {
HashMap<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("sex", sex);
map.put("position", position);
map.put("phone", phone);
map.put("department_id", department_id);
QueryWrapper<Employee> wrapper = new QueryWrapper<>();
//null2IsNull置为false
wrapper.allEq(map, false);
Page<Employee> page = new Page<>(now_page,num);
Page<Employee> pageOut = employeeService.page(page,wrapper);
//这里统一了结果封装
return Result.succ(pageOut);
}
结果
上一篇: 关于DOM element with id in Element cache is not the same as element in the Dom解决方法
下一篇: Mybatis中Example的用法
推荐阅读
-
MybatisPlus多条件查询并分页
-
Spring Data JPA 复杂/多条件组合分页查询
-
PageHelper插件实现一对多查询时的分页问题
-
springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能
-
Spring MVC结合Spring Data JPA实现按条件查询和分页
-
springboot +mybatis 使用PageHelper实现分页并带条件模糊查询功能
-
EasyUi+Spring Data 实现按条件分页查询的实例代码
-
需要一个php,AJAX做的分页带条件查询源码
-
Django分页查询并返回jsons数据(中文乱码解决方法)
-
多条件查询结果页面分页的问题