怎么使用mybatisPlus原生方法根据主表和从表字段查询从表数据,给我一个demo
时间: 2024-03-28 20:42:03 浏览: 22
使用 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,并使用 `@ResultType` 注解将查询结果映射到实体类中。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT o.* FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.name = #{name}")
@ResultType(Order.class)
List<Order> selectOrdersByName(String name);
}
```
3. 在 Service 或 Controller 中调用 Mapper 中定义的方法进行关联查询。
```java
List<Order> orders = userMapper.selectOrdersByName("张三");
```
注意:在 MyBatis-Plus 中使用原生方法进行关联查询时,无法直接将查询结果映射到主表的属性中,需要手动将查询结果与主表进行关联。例如:
```java
User user = userMapper.selectById(userId);
List<Order> orders = userMapper.selectOrdersByName(user.getName());
user.setOrders(orders);
```