MybatisPuls条件构造器allEq方法详解
用途
当传入参数很多的时候,可以直接用map接受参数,然后用map构造条件构造器,大大加快了编程的速度。
官网
可以看见官网上说用allEq就可以传入Map参数进行条件查询,下面对allEq传入的每一个参数进行详细的解释
params
Map params
代表传入的参数列表,可以是接受的前台传过来的Map参数列表,也可以是后台自己创建的map
boolean null2IsNull
这个参数是说当参数中有值为null的参数,会不会对该参数进行查询,如果值为true,就会进行查询,查询数据库表中该值为null的一行,如果为false,就不会对该字段进行查询。
allEq({id:1,name:"老王",age:null})--->id = 1 and name = '老王' and age is null
allEq({id:1,name:"老王",age:null}, false)--->id = 1 and name = '老王'
123
filter
allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
1
这里面的filter是一个BiPredicate对象,Java8里面Predicate是一个函数式接口,它接受一个参数返回一个boolean类型,通常在集合对象的筛选器中使用,BiPredicate和Predicate功能类似,只是多了一个参数。
condition
condition为true时该方法执行,如果为false,该方法不执行
代码实现
public List<CourseClassificationEntity> selectCourseClassificationList(Map<String ,Object> params) {
QueryWrapper <CourseClassificationEntity> wrapper = new QueryWrapper<>();
//只有当Key值不等于“name”的时候才放行
BiPredicate<String, Object> filter = (s,o)-> !s.equals("name");
//根据map参数进行条件查询
wrapper.allEq(filter, params, false);
String name = (String) params.get("name");
//模糊查询
if(name!=null)wrapper.like("name",name);
return courseClassificationMapper.selectList(wrapper);