美文网首页
mybatisplus自定义sql+QueryWrapper

mybatisplus自定义sql+QueryWrapper

作者: 王贺祥_三月 | 来源:发表于2020-11-15 16:38 被阅读0次

    UserMapper:

    @Repository  //代表持久层
    public interface UserMapper extends BaseMapper<User> {
    
    }
    

    如果queryWrapper调用了 .isNotNull("name")、 .isNotNull("email")、 .ge("age",12)

      @Test
        void contextLoads() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper
                    .isNotNull("name")
                    .isNotNull("email")
                    .ge("age",12);
            userMapper.selectList(queryWrapper).forEach(System.out::println);
        }
    

    那么运行的sql就是这样的:(注意where字句)

    ==>  Preparing: SELECT id,name,age,email,version,deleted,create_time,update_time FROM user WHERE deleted=0 
    AND (name IS NOT NULL AND email IS NOT NULL AND age >= ?)
    ==> Parameters: 12(Integer)
    

    如果queryWrapper只是调用了.isNotNull("name")

        @Test
        void contextLoads() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper
                    .isNotNull("name");   //只调用了一个非空条件
    
            userMapper.selectList(queryWrapper).forEach(System.out::println);
        }
    

    那么运行结果就是这样的:(注意where子句)

    ==>  Preparing: SELECT id,name,age,email,version,deleted,create_time,update_time FROM user WHERE deleted=0 
    AND (name IS NOT NULL)
    ==> Parameters: 
    

    找到规律了没?
    其实很简单,QueryWraper就是增加where字句的。queryWrapper调用了一下 .isNotNull("name"),那么sql语句的where条件里面就加一句and name IS NOT NUL,queryWrapper再调用一下.ge("age",12),那么sql语句得where条件里面就再加一句and age >12。

    mybatisplus自定义sql
    参考:https://www.cnblogs.com/baiyifengyun/p/13756653.html

    mybatisplus自定义sql+QueryWrapper
    这里举一个多表联查的例子
    实体类:

    image.png Mapper文件: image.png 测试类 image.png

    相关文章

      网友评论

          本文标题:mybatisplus自定义sql+QueryWrapper

          本文链接:https://www.haomeiwen.com/subject/dvmnbktx.html