mybatis-plus链式查询
时间: 2023-09-20 20:07:20 浏览: 89
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能,其中也包括链式查询。通过使用链式查询,可以更加简洁地构建复杂的查询条件。
在MyBatis-Plus中,链式查询主要通过使用Wrapper来实现。Wrapper是一个用于构建查询条件的类,它提供了一系列的方法用于添加查询条件。下面是一个示例:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25) // 添加等于条件
.like("name", "John") // 添加模糊查询条件
.orderByDesc("create_time"); // 添加排序条件
List<User> userList = userMapper.selectList(queryWrapper);
```
上述代码中,我们创建了一个QueryWrapper对象,并通过调用其方法来添加查询条件。最后,我们使用selectList方法执行查询操作,并将结果保存到userList中。
除了eq和like方法,QueryWrapper还提供了很多其他的方法,如ge、le、between等,用于构建不同类型的查询条件。你可以根据具体的需求选择合适的方法来构建查询条件。
需要注意的是,MyBatis-Plus提供了很多其他的功能,如分页查询、更新操作等。你可以参考官方文档来了解更多关于MyBatis-Plus的使用方式。
相关问题
mybatis-plus条件查询,分页查询
MyBatis-Plus是一个基于MyBatis的增强工具,提供了更方便的数据库操作方式。关于MyBatis-Plus的条件查询和分页查询,可以通过以下方法实现:
条件查询:
使用MyBatis-Plus的QueryWrapper类来构建查询条件,可以使用各种条件和操作符进行组合查询。例如,可以使用eq方法表示等于条件,使用like方法表示模糊查询。可以通过链式调用多个条件来构建更复杂的查询语句。
示例代码:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20)
.like("name", "John");
List<User> userList = userMapper.selectList(queryWrapper);
```
分页查询:
使用MyBatis-Plus的Page类来进行分页查询。可以通过传入当前页码和每页记录数来进行分页,并且可以结合查询条件进行分页查询。分页查询会返回一个Page对象,其中包含了查询结果和相关分页信息。
示例代码:
```
Page<User> page = new Page<>(1, 10); // 查询第一页,每页10条记录
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20);
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
List<User> userList = userPage.getRecords();
```
mybatis-plus多表查询
MyBatis-Plus 是一款 MyBatis 的增强工具,在多表查询方面提供了许多便利的功能和API。
MyBatis-Plus 多表查询可以通过以下方式实现:
1. 使用 MyBatis-Plus 提供的 QueryWrapper 类,通过链式调用方法实现多表查询。例如:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user.*", "order.*")
.eq("user.id", 1)
.eq("order.user_id", 1)
.orderByDesc("order.create_time");
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
```
2. 使用 MyBatis-Plus 提供的 @TableField 注解,在实体类中定义关联字段。例如:
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
@TableField(exist = false)
private List<Order> orders;
}
@Data
public class Order {
private Long id;
private Long userId;
private String orderNo;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT user.*, order.* FROM user LEFT JOIN order ON user.id = order.user_id WHERE user.id = #{id}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age"),
@Result(property = "orders", column = "id", many = @Many(select = "com.example.mapper.OrderMapper.selectByUserId"))
})
User selectWithOrders(Long id);
}
@Mapper
public interface OrderMapper extends BaseMapper<Order> {
@Select("SELECT * FROM order WHERE user_id = #{userId}")
List<Order> selectByUserId(Long userId);
}
```
以上是两种常用的 MyBatis-Plus 多表查询方式,具体使用方式可以根据实际情况选择。