mybatisPlus根据主表和从表字段查询从表数据
时间: 2024-03-28 07:42:02 浏览: 88
支持连表查询的mybatis-plus
5星 · 资源好评率100%
可以使用 MyBatis-Plus 的关联查询功能来实现根据主表和从表字段查询从表数据。具体步骤如下:
1. 在实体类中定义从表的属性,并使用 @TableField 注解指定从表的字段名。
```java
public class User {
private Long id;
private String name;
private Integer age;
@TableField(exist = false) // 表示该属性为非数据库字段
private List<Order> orders; // 从表属性
}
public class Order {
private Long id;
private Long userId;
private String orderNo;
}
```
2. 在 Mapper 中使用 @Select 注解定义关联查询 SQL,并使用 @Results 注解将查询结果映射到实体类中。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT u.*, o.id AS order_id, o.order_no FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.name = #{name}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age"),
@Result(property = "orders", column = "order_id", many = @Many(select = "com.example.mapper.OrderMapper.selectById"))
})
User selectByNameWithOrders(String name);
// OrderMapper 中的方法
@Select("SELECT * FROM order WHERE id = #{id}")
Order selectById(Long id);
}
```
3. 调用 Mapper 中定义的方法进行关联查询。
```java
User user = userMapper.selectByNameWithOrders("张三");
List<Order> orders = user.getOrders();
```
阅读全文