SpringBoot整合MybatisPlus之condition作用演示

之前展示的方法,例如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来进行判断极大的简化代码。。。。。。

猜你喜欢

转载自www.cnblogs.com/zhukf/p/12145681.html