使用mybatisPlus条件构造器对数据库进行操作

文章介绍了如何在Spring框架中使用QueryWrapper和LambdaQueryWrapper构建更灵活、可读性更高的SQL查询条件,尤其是强调了LambdaQueryWrapper在避免硬编码方面的优点,以及在更新操作中的使用示例。
摘要由CSDN通过智能技术生成

 条件构造器的用法:

  • QueryWrapper和LambdaQueryWrapper通常用来构建select、delect、update的where条件部分;
  • UpdateWrapper和LambadaUpdateWrapper通常只有在set语句使用比较特殊才使用
  • 尽量使用LambdaQueryWrapper和LambdaUpdateWrapper,避免硬编码
    //查询包含o字母,且薪水大于800的员工
    @Test
    void testQueryWrapper(){
        //1.构建查询条件
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .select("id","username","info","balance")
                .like("username", "o")
                .ge("balance", 800);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        users.forEach(System.out::println);
    }

    //更新Jack的薪水为2000
    @Test
    void testUpdateQueryWrapper(){
        //1.构建更新条件
        User user = new User();
        user.setBalance(2000);
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .eq("username", "jack");
        userMapper.update(user, wrapper);
    }

    //扣除 id为 1 2 4 的薪水 各减200
    @Test
    void testUpdateWrapper(){
        //创建一个集合
        List<Long> ids = List.of(1L,3L,4L);
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>()
                .setSql("balance = balance - 200")
                .in("id", ids);
        userMapper.update(null, updateWrapper);
    }
}

执行后:

 

其中使用LambdaQueryWrapper避免硬编码:

原始代码:

    //查询包含o字母,且薪水大于800的员工
    @Test
    void testQueryWrapper(){
        //1.构建查询条件
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .select("id","username","info","balance")
                .like("username", "o")
                .ge("balance", 800);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        users.forEach(System.out::println);
    }

 改进代码:

    //查询包含o字母,且薪水大于800的员工
    @Test
    void testLambdaQueryWrapper(){
        //1.构建查询条件
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
                .select(User::getId,User::getUsername,User::getInfo,User::getBalance)
                .like(User::getUsername, "o")
                .ge(User::getBalance, 800);
        //2.查询
        List<User> users = userMapper.selectList(wrapper);
        users.forEach(System.out::println);
    }

 

MyBatis-Plus 的条件构造器可以让我们在进行数据库操作时,更加方便快捷地构建 SQL 语句,具有以下特点: - 支持链式调用 - 友好的 API - 安全的 SQL 拼接 - 支持 lambda 表达式 - 支持自定义 SQL 片段 下面是 MyBatis-Plus 条件构造器使用方法: 1. 导入 MyBatis-Plus 的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> ``` 2. 创建 QueryWrapper 对象: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); ``` 3. 添加查询条件: ```java // eq 等于 queryWrapper.eq("name", "张三"); // ne 不等于 queryWrapper.ne("age", 18); // gt 大于 queryWrapper.gt("age", 20); // ge 大于等于 queryWrapper.ge("age", 18); // lt 小于 queryWrapper.lt("age", 30); // le 小于等于 queryWrapper.le("age", 30); // between 区间查询 queryWrapper.between("age", 18, 30); // like 模糊查询 queryWrapper.like("name", "张"); // or 或者 queryWrapper.or(wrapper -> wrapper.eq("age", 18).ne("name", "张三")); // in 包含 queryWrapper.in("age", Arrays.asList(18, 20, 22)); // notIn 不包含 queryWrapper.notIn("age", Arrays.asList(24, 26, 28)); // isNull 空 queryWrapper.isNull("email"); // isNotNull 非空 queryWrapper.isNotNull("email"); // orderBy 排序 queryWrapper.orderByDesc("age"); // last 拼接 SQL 片段 queryWrapper.last("limit 10"); ``` 4. 执行查询: ```java List<User> userList = userMapper.selectList(queryWrapper); ``` 以上就是 MyBatis-Plus 条件构造器使用方法,更多的查询条件可以参考官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值