之前展示的方法,例如like,between,eq等,查看源码发现里面都是重载方法,第一个参数都为boolean类型的condition,默认为true,默认执行
模拟背景:前端页面有个查询需要姓名和邮箱来作为查询条件,填入姓名邮箱后,后端需要进行判断后查询sql
一:controller接收后判断处理(原来的写法)
模拟用户查询代码:请求参数:name,email
/** *模拟前台传入参数,name和email */ @Test public void testCondition(){ String name="王"; String email=""; condition(name,email); } private void condition(String name,String email){ QueryWrapper<User> queryWrapper = new QueryWrapper<>(); //对name进行非空判断 if(StringUtils.isNotEmpty(name)){ queryWrapper.like("name",name); } //对email进行非空判断 if(StringUtils.isNotEmpty(email)){ queryWrapper.like("email",email); } List<User> userList = userMapper.selectList(queryWrapper); userList.forEach(System.out::println); }
结果:显而易见,name作为查询条件出现在了sql中,而email由于做了非空判断没有在sql中展示出来
二.使用condition后的写法
/** *模拟前端传入参数查询符合条件用户,查询参数:name,email */ @Test public void testCondition(){ String name=""; String email="x"; condition(name,email); } private void condition(String name,String email){ QueryWrapper<User> queryWrapper = new QueryWrapper<>(); //采用condition进行条件判断,条件为true,进行查询 queryWrapper.like(StringUtils.isNotEmpty(name),"name",name) .like(StringUtils.isNotEmpty(email),"email",email); List<User> userList = userMapper.selectList(queryWrapper); userList.forEach(System.out::println); }
结果:
通过condition来进行判断极大的简化代码。。。。。。
SpringBoot整合MybatisPlus之condition作用演示
原文:https://www.cnblogs.com/zhukf/p/12145681.html