mybatis-plus级联查询
时间: 2023-11-17 17:56:59 浏览: 74
Mybatis-Plus提供了方便的级联查询功能,可以通过在实体类上注解属性指定resultMap的id,添加级联表映射类的对象属性,来完成级联查询。在查询时,只需要调用Mybatis公共服务接口、公共映射器接口,返回对象时,就可以自动完成级联查询。一对一级联查询可以通过在@Result注解中指定子查询关联的主表中的列名和子查询的查询结果关联的实体属性来实现。具体实现可以参考以下代码:
@Results(id = "userResultMap", value = {
@Result(column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "password", property = "password"),
@Result(column = "id", property = "roles", many = @Many(select = "com.hxh.basic.project.mapper.RoleMapper.getListByUserId"))
})
public interface UserMapper extends BaseMapper<User> {
// ...
}
其中,@Result注解中的many属性指定了多对一关系,select属性指定了子查询方法。
相关问题
Mybatis-plus级联删除
Mybatis-plus支持级联删除,具体实现可以参考以下步骤:
1. 在实体类中设置需要级联删除的关联关系,使用注解`@TableField(exist = false)`标注,如下所示:
```java
public class User {
private Long id;
private String name;
@TableField(exist = false)
private List<Order> orders;
}
```
2. 在Mapper接口中定义级联删除的方法,使用注解`@Delete`,同时使用Mybatis-plus提供的`@Param`注解指定参数名称,如下所示:
```java
public interface UserMapper extends BaseMapper<User> {
@Delete("delete from order where user_id = #{userId}")
void deleteOrdersByUserId(@Param("userId") Long userId);
}
```
3. 在Service层调用Mapper接口的级联删除方法,如下所示:
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean removeById(Serializable id) {
User user = getById(id);
List<Order> orders = user.getOrders();
if (orders != null && !orders.isEmpty()) {
userMapper.deleteOrdersByUserId(user.getId());
}
return super.removeById(id);
}
}
```
在删除用户时,先查询用户关联的订单,如果存在订单则调用Mapper接口的级联删除方法删除订单,最后再删除用户。这样就实现了Mybatis-plus的级联删除。
mybatis-plus多级查询
Mybatis-Plus支持多级查询,可以通过定义resultMap来实现级联查询。在实体类上使用注解指定resultMap的id,然后在属性上添加级联表映射类的对象属性。这样在调用Mybatis-Plus提供的公共服务接口和公共映射器接口时,返回的对象会自动完成级联查询。可以使用这种方法实现一对一级联查询,例如查询帖子评论的多级回复以及每个回复关联的用户信息。这种级联查询的模板具有高度的可移植性,并且能够提高代码的编码效率。通过直接调用Mybatis-Plus的公共映射器方法,可以完成级联查询的代码测试。在控制层和服务层调用Mybatis-Plus提供的CRUD操作和条件查询器时,自动完成级联查询,展现了Java框架强大的面向对象特性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)