mybatis-plus子节点查询
时间: 2023-09-22 20:05:08 浏览: 139
mybatis-plus分页查询
在 MyBatis-Plus 中,可以通过 @TableField 注解中的 exist 属性来表示该字段是否为数据库表中的一个列,如果不是则可以通过查询子节点的方式获取该字段的值。
例如,假设我们有以下两个实体类:
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
private List<Role> roles;
}
@Data
public class Role {
private Long id;
private String name;
}
```
其中,User 实体类中包含了一个 List 类型的 roles 字段,表示该用户拥有哪些角色。
如果我们想要查询用户的信息以及其所拥有的角色信息,可以使用 MyBatis-Plus 提供的 Wrapper 来进行查询,例如:
```java
QueryWrapper<User> userWrapper = new QueryWrapper<>();
userWrapper.lambda().eq(User::getId, 1L);
QueryWrapper<Role> roleWrapper = new QueryWrapper<>();
roleWrapper.lambda().inSql(Role::getId, "SELECT role_id FROM user_role WHERE user_id = 1");
List<Role> roles = roleMapper.selectList(roleWrapper);
User user = userMapper.selectOne(userWrapper);
user.setRoles(roles);
```
在上述代码中,我们首先使用 QueryWrapper 查询出 id 为 1 的用户信息,然后使用 inSql 子查询方式查询该用户所拥有的角色信息,最后将查询结果设置到用户实体类中的 roles 字段中。
阅读全文