LambdaQueryWrapper和QueryWrapper 的 in 方法的区别
时间: 2024-05-07 21:13:55 浏览: 8
LambdaQueryWrapper和QueryWrapper是MyBatis-Plus框中的两个查询条件封装类,用于构建SQL查询条件。它们的in方法的区别如下:
1. LambdaQueryWrapper的in方法:
- 使用Lambda表达式作为参数,可以直接引用实体类的属性。
- 可以传入多个参数值,表示需要匹配的值列表。
- 生成的SQL语句中使用IN关键字,将参数值列表作为一个整体进行匹配。
2. QueryWrapper的in方法:
- 使用字符串作为参数,需要手动指定数据库表的列名。
- 只能传入一个参数值,表示需要匹配的单个值。
- 生成的SQL语句中使用IN关键字,将参数值作为一个单独的值进行匹配。
综上所述,LambdaQueryWrapper的in方法更加方便和灵活,可以直接使用实体类属性进行条件构建,并支持多个值的匹配;而QueryWrapper的in方法需要手动指定列名,并且只能传入单个值进行匹配。
相关问题
LambdaQueryWrapper&QueryWrapper or
LambdaQueryWrapper和QueryWrapper都是MyBatis-Plus框架中的查询构造器,用于构建SQL查询语句。其中,LambdaQueryWrapper是基于Lambda表达式的查询构造器,可以更加方便地进行条件查询,而QueryWrapper则是基于字符串的查询构造器。
LambdaQueryWrapper和QueryWrapper都支持链式调用,可以通过and()、or()等方法来构建复杂的查询条件。其中,or()方法可以用于构建OR条件查询。
另外,LambdaQueryWrapper和QueryWrapper都支持一些常用的查询方法,如eq()、ne()、like()、in()、between()等,可以方便地构建各种查询条件。
需要注意的是,LambdaQueryWrapper和QueryWrapper的使用方法略有不同,具体可以参考MyBatis-Plus的官方文档。
QueryWrapper和LambdaQueryWrapper
QueryWrapper和LambdaQueryWrapper都是MyBatis-Plus中的查询构造器,于构建SQL查询条件。
QueryWrapper是一种普通的方法链式调用来构建查询条件,需要手动指定实体类的属性名,不支持类型安全的Lambda表达式。示例代码如下:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom")
.like("email", "@gmail.com")
.in("age", Arrays.asList(18, 20, 25));
List<User> userList = userMapper.selectList(queryWrapper);
```
LambdaQueryWrapper是一种类型安全的Lambda表达式构建查询条件的方式,可以避免手动指定实体类的属性名。示例代码如下:
```java
LambdaQueryWrapper<User> user= new LambdaQueryWrapper<>();
user.eq(User::getState, 1);
user.eq(User::getEnable, 1);
List<User> userList = userMapper.selectList(user);
```