条件查询LambdaQueryWrapper

原文地址:QueryWrapperLambdaQueryWrapper-(条件查询)_杰拉德·皮克·谢的博客-CSDN博客


 

MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

假如我们有一张user表,现需要通过user_name查出所有数据

@ApiModel(description = "用户实体")

public class User {

    /**

     * serialVersionUID

     */

    @ApiModelProperty(value = "主键")

    private Integer id;

    @ApiModelProperty(value = "用户名")

    private String username;

    @ApiModelProperty(value = "真实昵称")

    private String realname;

    @ApiModelProperty(value = "性别")

    private String sex;

    @ApiModelProperty(value = "工号")

    private String jobNum;

    @ApiModelProperty(value = "状态 0 启用 1 禁用")

    private Integer isDel;

    @ApiModelProperty(value = "部门")

    private Integer departmentId;

    private String departmentName;

    @ApiModelProperty(value = "密码")

    private String password;// 用户密码

    @ApiModelProperty(value = "手机")

    private String mobile;// 手机

    private Integer createUser;

    private Integer editUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Date gmtCreate;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Date gmtUpdate;

    }

QueryWrapper

最基础的使用方式是这样

// 查询条件构造器

QueryWrapper<User > wrapper = new QueryWrapper<>();

wrapper.eq("user_name", id);

// 查询操作

List<User > users = userMapper.selectList(wrapper);

然后我们可以引入lambda,避免我们在代码中写类似的于user_name的硬编码

QueryWrapper wrapper = new QueryWrapper<>();

wrapper.lambda().eq(User::getuserName, userName);

List users= userMapper.selectList(wrapper);

LambdaQueryWrapper

为了简化lambda的使用,我们可以改写成LambdaQueryWrapper构造器,语法如下:

LambdaQueryWrapper<User> wrapper = new QueryWrapper<User>().lambda();

wrapper.eq(User::getuserName, userName);

List<User> users= userMapper.selectList(wrapper);

我们可以再次将QueryWrapper.lambda()简化,变成这个样子

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();

wrapper.eq(User::getuserName, userName);

List<User> bannerItems = userMapper.selectList(wrapper);

链式查询

MyBatis-Plus还提供了一种链式查询的方式,和上面的代码效果一样。

但是这种写法偏向于炫技,可读性没有上面的代码强,大家可以根据需要自行选择方式。

List<User> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)

                        .eq(User::getuserName, userName)

                        .list();

// 增加条件

int count = tcmcConfigTreeService.count(

                    new LambdaQueryWrapper<TcmcConfigTree>()

                            .eq(TcmcConfigTree::getNodeName, tcmcConfigTree.getNodeName()).ne(TcmcConfigTree::getId, tcmcConfigTree.getId())

                   

            );

LambdaQueryWrapper 条件删除

条件删除符合条件的全部删除

  LambdaQueryWrapper<USer> objectLambdaQueryChainWrapper = new LambdaQueryWrapper<>();

            objectLambdaQueryChainWrapper.eq(User::getDepartmentId, departmentId);

            cEquipmentMapper.delete(objectLambdaQueryChainWrapper);

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: lambdaquerywrapper是一个开源的Java工具包,提供了一种更加简便和易用的方式来构建和执行数据库查询语句。它的主要特点包括灵活性、可扩展性和效率高。 在使用lambdaquerywrapper中进行条件查询时,我们可以使用lambda表达式来构建查询条件。比如,我们可以使用lambda表达式来指定查询条件的字段和值,以及使用and或or运算符连接多个查询条件。 另外,lambdaquerywrapper还提供了一些方便的方法来简化查询操作。比如,我们可以使用eq()方法来指定等于查询条件,使用like()方法来模糊查询,使用in()方法来指定范围查询等等。 使用lambdaquerywrapper进行条件查询时,我们需要注意选择合适的查询方法和运算符,以及避免查询条件过于复杂和庞大,从而影响查询效率。同时,我们需要熟悉自己所使用的数据库类型和版本,以确保查询条件的兼容性和正确性。 总的来说,使用lambdaquerywrapper进行条件查询可以有效地提高查询效率和开发效率,尤其适用于对于复杂数据结构和大规模数据的查询和分析。 ### 回答2: LambdaQueryWrapper是MyBatis-Plus提供的一个查询条件封装器,可以让我们更方便地使MyBatis-Plus的Lambda表达式实现SQL查询LambdaQueryWrapper可以用于多种不同的过滤条件,包括等于、不等于、大于、小于、等等。这些过滤条件可以根据我们的实际需求进行组合,形成复杂的查询条件LambdaQueryWrapper具有非常高的灵活性和扩展性。通过Lambda表达式,我们可以方便地编写出复杂的查询条件。例如,我们可以根据多个条件进行组合查询,还可以对查询条件进行排序,以及分组查询LambdaQueryWrapper在使用时还需要注意一些细节问题。例如,我们需要使用select和from来指定我们要查询的表,同时还需要使用lambda表达式来指定查询条件。我们还可以使用LambdaQueryWrapper的各种方法,如eq(等于)、ne(不等于)、ge(大于等于)、gt(大于)、le(小于等于)、lt(小于)、between(区间)等来添加查询条件。 总之,LambdaQueryWrapper是一个非常强大的查询条件封装器,可以方便地完成MyBatis-Plus的Lambda表达式实现SQL查询。使用LambdaQueryWrapper可以大大提高我们的开发效率,并减少出错的可能性。 ### 回答3: Lambda QueryWrapper是Mybatis-plus提供的一种灵活且方便的条件查询方式,它可以通过lambda表达式来构建查询条件,使用起来非常简单。下面我们来详细讲解一下Lambda QueryWrapper条件查询Lambda QueryWrapper的基本操作: 1. 创建QueryWrapper对象 创建QueryWrapper对象的方式有两种,一种是直接new QueryWrapper(),另一种是使用QueryWrapper.lambda()静态方法,可以直接在lambda表达式中构建查询条件。 2. 等值查询 等值查询是最为基本的查询操作,使用eq方法可以构建等值查询条件。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username", "张三"); 这段代码表示查询username等于“张三”的User对象。 3. 模糊查询 模糊查询常用于模糊匹配字符串,使用like方法可以构建模糊查询条件。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.like("username", "张"); 这段代码表示查询username包含“张”字的User对象。 4. 范围查询 范围查询可以查询某个参数在一定范围内的记录,使用between方法可以构建范围查询条件。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.between("age", 20, 30); 这段代码表示查询年龄在20到30岁之间的User对象。 5. 排序查询 排序查询可以对查询结果按照某一字段进行排序,使用orderByAsc和orderByDesc方法可以构建排序查询条件。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("age"); 这段代码表示按照年龄升序排列查询结果。 Lambda QueryWrapper的高级操作: 1. 子查询查询可以在查询结果中嵌入另一个查询,使用nested方法可以构建子查询条件。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.nested(qw -> qw.eq("username", "张三").or().eq("username", "李四")); 这段代码表示查询username等于“张三”或者“李四”的User对象。 2. 条件组合 条件组合可以通过and和or方法将多个查询条件进行组合,使用嵌套Lambda表达式也可以构建更为复杂的条件组合。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("gender", "男").and(qw -> qw.between("age", 20, 30).or().between("age", 40, 50)); 这段代码表示查询性别为“男”,且年龄在20到30岁或40到50岁之间的User对象。 3. lambda表达式 lambda表达式是Lambda QueryWrapper的重要特性,它可以通过Lambda表达式的方式对查询条件进行构建,使用方法极为简洁。例如: QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(User::getUsername, "张三").or().eq(User::getUsername, "李四"); 这段代码使用lambda表达式查询username等于“张三”或者“李四”的User对象。 Lambda QueryWrapper作为Mybatis-plus的强大查询工具,几乎可以满足所有复杂的条件查询需求,学习并掌握Lambda QueryWrapper对于提高开发效率和代码质量非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值