mybatis plus的动态sql中条件查询写法以及写在哪个类中?
时间: 2023-11-25 16:11:39 浏览: 51
MyBatis Plus的动态SQL可以使用Lambda表达式或者Wrapper对象来实现条件查询。一般情况下,这些条件查询会被写在Dao接口对应的Mapper.xml文件中。
Lambda表达式的写法如下:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getName, "张三").gt(User::getAge, 18);
List<User> userList = userMapper.selectList(queryWrapper);
```
Wrapper对象的写法如下:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
```
需要注意的是,Lambda表达式需要在实体类中定义相应的属性,而Wrapper对象则需要手动指定对应的数据库字段名。
相关问题
mybatis plus3.3中 查询写法
MyBatis-Plus 3.3 中查询写法可以使用如下方式:
1. 根据主键查询单条记录
```java
User user = userMapper.selectById(1L);
```
其中,`userMapper` 是一个继承了 `BaseMapper<User>` 的接口,可以通过 Spring 注入或者 MyBatis 的 XML 映射文件中配置。
2. 根据条件查询多条记录
```java
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.eq("age", 18)
.like("name", "Tom"));
```
其中,`QueryWrapper` 是 MyBatis-Plus 提供的条件构造器,可以通过链式调用构建查询条件。`selectList` 方法会返回符合条件的所有记录列表。
3. 分页查询
```java
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<User>()
.eq("age", 18)
.like("name", "Tom"));
```
其中,`Page` 是 MyBatis-Plus 提供的分页对象,接收两个参数:当前页码和每页记录数。`selectPage` 方法会返回符合条件的分页对象,其中包含了符合条件的记录列表和分页信息。
4. 自定义 SQL 查询
```java
List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>()
.select(User::getId, User::getName)
.eq(User::getAge, 18)
.like(User::getName, "Tom"));
```
其中,`LambdaQueryWrapper` 是基于 Java 8 Lambda 表达式的条件构造器,可以通过方法引用构建查询条件。`select` 方法可以指定需要查询的列,可以使用实体类的属性名或者方法引用。`selectList` 方法会返回符合条件的所有记录列表。
以上是 MyBatis-Plus 3.3 中常用的查询写法,根据实际需求选择适合的方法。
mybatis plus sql in写法
MyBatis-Plus 提供了 `in` 查询的多种写法,以下是几种常用的方式:
1. 使用 `in` 方法:通过 `in` 方法可以传入一个集合或数组作为查询条件。
```java
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", ids));
```
2. 使用 `inSql` 方法:通过 `inSql` 方法可以传入一个 SQL 子查询作为查询条件。
```java
String subQuery = "SELECT id FROM user WHERE age > 18";
List<User> userList = userMapper.selectList(new QueryWrapper<User>().inSql("id", subQuery));
```
3. 使用 lambda 表达式:可以直接使用 lambda 表达式构建 `in` 查询条件。
```java
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery().in(User::getId, ids));
```
4. 使用条件构造器:可以使用条件构造器来动态构建 `in` 查询条件。
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", 1, 2, 3);
List<User> userList = userMapper.selectList(queryWrapper);
```
以上是一些常见的 MyBatis-Plus 中 `in` 查询的写法,你可以根据具体的场景选择适合的方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)