springboot + mybatis 双向一对多注解查询
表结构:
user:
role:
1. user 与 role 的entity
public class User implements Serializable {
private Integer id;
private String name;
private Gender gender;
private List<Role> roleList;
get set ......
}
public class Role implements Serializable {
private Integer id;
private String role;
private User user;
get set ......
}
2.user与role mapper
@Repository
public interface UserMapper {
@Select("select id,name,gender from mk_user")
@Results({@Result(id = true, column = "id", property = "id"),
@Result(column = "name", property = "name"),
@Result(column = "gender", property = "gender",typeHandler = EnumTypeHandler.class),
@Result(property = "roleList", column = "id", javaType = List.class, many = @Many(select = "com.demo.mapper.RoleMapper.getRoleByUserId"))})
List<User> findAll();
@Select("select id, name from mk_user where id = #{id}")
@Results({
@Result(id = true, column = "id", property = "id"),
@Result(column = "name", property = "name")
})
User findByUserId(Integer id);
}
@Repository
public interface RoleMapper {
@Select("select * from mk_role where user_id = #{userId}")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "role", property = "role")
})
List<Role> getRoleByUserId(Integer userId);
@Select("select * from mk_role")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "role", property = "role"),
@Result(column = "user_id",property = "user" ,javaType = User.class,one = @One(select = "com.demo.mapper.UserMapper.findByUserId"))
})
List<Role> findAll();
}