Mybatis查询结果ResultMap的继承

£神魔★判官ぃ 2021-06-24 16:09 534阅读 0赞

需求:在查询用户表的同时,关联角色表查出角色名称(假设每个用户只有一个角色)

  1. //用户类
  2. public class User {
  3. private String id;
  4. private String name;
  5. private String roleId;
  6. public String getId() {
  7. return id;
  8. }
  9. public void setId(String id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public String getRoleId() {
  19. return roleId;
  20. }
  21. public void setRoleId(String roleId) {
  22. this.roleId = roleId;
  23. }
  24. }
  25. //角色类
  26. public class Role {
  27. private String id;
  28. private String name;
  29. public String getId() {
  30. return id;
  31. }
  32. public void setId(String id) {
  33. this.id = id;
  34. }
  35. public String getName() {
  36. return name;
  37. }
  38. public void setName(String name) {
  39. this.name = name;
  40. }
  41. }
  42. //接收查询结果的用户类
  43. public class UserView extends User{
  44. private String roleName;
  45. public String getRoleName() {
  46. return roleName;
  47. }
  48. public void setRoleName(String roleName) {
  49. this.roleName= roleName;
  50. }
  51. }

XML文件

  1. <resultMap id="BaseResultMap" type="User" >
  2. <id column="id" property="id" jdbcType="VARCHAR" />
  3. <result column="name" property="name" jdbcType="VARCHAR" />
  4. <result column="role_id" property="roleId" jdbcType="VARCHAR" />
  5. </resultMap>
  6. <resultMap id="ViewMap" type="UserView" extends="BaseResultMap">
  7. <result column="role_name" property="roleName" jdbcType="VARCHAR" />
  8. </resultMap>
  9. <select id="queryList" resultMap="ViewMap" parameterType="UserView">
  10. select
  11. u.id,
  12. u.name,
  13. u.role_id,
  14. r.name as role_name
  15. from user u
  16. left join role r
  17. on u.role_id = r.id
  18. </select>

发表评论

表情:
评论列表 (有 0 条评论,534人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis resultMap结果类型

    resultMap标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。 在select标签中使用resultMap属性指定引用即可。 <r