mybatisplus的关联查询怎么查
时间: 2024-08-12 19:05:55 浏览: 48
MyBatis实践之动态SQL及关联查询
在MyBatisPlus中,关联查询通常涉及到一对多(ManyToOne)、一对一(OneToOne)、多对多(ManyToMany)关系。以下是基本的关联查询方法:
1. **一对多(OneToMany)查询**:
- 获取所有子实体:`BaseMapper<ParentEntity, ChildEntity>.selectList(new QueryWrapper<>(parentEntity));`
- 根据主键获取关联子实体集合:`BaseMapper<ParentEntity, ChildEntity>.selectList(new QueryWrapper<ParentEntity>().eq("parentId", childId));`
2. **一对一(OneToOne)查询**:
- 获取关联实体:`BaseMapper<ParentEntity, ChildEntity>.selectOne(parentEntity);`
- 或者,如果ChildEntity有一个引用ParentEntity的外键,也可以直接从ChildEntity查询:`ChildMapper.selectById(childId).mapTo(parentEntityClass);`
3. **多对多(ManyToMany)查询**:
- 需要先获取到关联表中的中间ID,然后根据这个ID查询关联的实体:假设User和Role有多对多关系,`BaseMapper<User, Role> userMapper; BaseMapper<Role, UserRole> roleMapper; User user = userMapper.selectById(userId); List<Role> roles = roleMapper.selectList(new QueryWrapper<UserRole>().eq("userId", userId));`
4. **使用关联属性**:
- 可以在查询时直接访问关联属性,例如`parentMapper.selectMaps(new QueryWrapper<>().lambda()...);`会自动填充关联的子实体。
记得在查询前,确保你已经配置了相应的数据映射,MyBatisPlus会根据注解如@TableField、@TableJoin等自动生成对应的SQL语句。
阅读全文