mybatis-plus多表查询案例
时间: 2023-07-18 13:37:56 浏览: 102
好的,下面是一个 Mybatis-Plus 多表查询的案例:
假设我们有两个表,一个是 `user`,另一个是 `order`。它们的结构分别如下:
```
user
- id
- name
- age
order
- id
- user_id
- amount
```
现在我们需要查询出所有用户及其对应的订单总金额,可以按照以下步骤进行:
1. 创建一个包含用户及订单总金额的 DTO 类:
```java
@Data
public class UserOrderDto {
private Long id;
private String name;
private Integer age;
private BigDecimal totalAmount;
}
```
2. 创建一个 Mapper 接口,并使用 `@Select` 注解编写 SQL 语句:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT user.id, user.name, user.age, SUM(order.amount) AS total_amount " +
"FROM user " +
"LEFT JOIN order ON user.id = order.user_id " +
"GROUP BY user.id")
List<UserOrderDto> selectUserOrderDtoList();
}
```
3. 在 Service 中调用 Mapper 的方法即可:
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<UserOrderDto> getUserOrderDtoList() {
return userMapper.selectUserOrderDtoList();
}
}
```
这样就可以查询出所有用户及其对应的订单总金额了。需要注意的是,这里使用了左连接(`LEFT JOIN`)来查询,这样即使用户没有订单,也能查询出来。同时,在 SQL 语句中使用了 `SUM` 函数来计算订单总金额。
阅读全文