举例:用户和用户详情一对一关联,用户mapper接口如下:
public interface UserMapper { @Select("SELECT * FROM users") @Results({ @Result(id = true, column = "id", property = "id"), @Result(column = "detail_id", property = "detail", one = @One(select = "com.test.mapper.UserDetailMapper.selectDetailById")) }) List<User> selectAll(); }
UserDetailMapper接口如下:
public interface UserDetailMapper { @Select("SELECT * FROM user_details WHERE id = #{id}") UserDetail selectDetailById(int id); }
在selectAll方法中,使用@One注解声明一对一嵌套结果映射,select属性指定的UserDetailMapper.selectDetailById查询用户详情,并映射到User实体的detail属性。
这样,在调用UserMapper.selectAll()时,会自动进行嵌套查询,填充User实体的detail属性,实现一对一关联查询。一对一关联的级联查询,可以在UserInfo Mapper增加方法如下:
@Select("SELECT * FROM users WHERE detail_id = #{id}") List<User> selectByDetailId(int id);
然后在UserDetailMapper的selectDetailById方法上增加映射:
@Select("SELECT * FROM user_details WHERE id = #{id}") @Results({ @Result(id = true, column = "id", property = "id"), @Result(column = "id", property = "users", many = @Many(select = "com.test.mapper.UserMapper.selectByDetailId")) }) UserDetail selectDetailById(int id);
这里使用@Many注解定义多对一集合嵌套结果映射,当查询某个用户详情时,会自动进行关联查询users,实现级联查询。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录