Mybatis中的resultMap理解

在xml文件中写SQL语句,若只是单独用到一张表,一般用resultType就够了,对于下划线和驼峰形式的转换一般在框架内配置一下即可实现;

但是在实际操作过程中往往会涉及到多表操作,一个类的属性也常常会使用另一个类作为其中一个属性;这个时候就要用到resultMap这个标签。

这个标签最本质解决的问题就是SQL语句查询结果与类属性对应问题。

 

 

 

对于这个标签,其实最简单的应用就是前面说的下划线与驼峰之间的转换。

// 实体类
public class User {
  private int id;
  private String username;
  private String hashedPassword;

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getHashedPassword() {
    return hashedPassword;
  }
  public void setHashedPassword(String hashedPassword) {
    this.hashedPassword = hashedPassword;
  }
}
//原本中的xml文件中的SQL
<select id="selectUsers" resultType="User">
  select
    user_id,user_name,hashed_password
  from some_table
  where id = #{id}
</select>
// 实际xml文件中
<resultMap id="userResultMap" type="User">
  <id property="id" column="user_id" />
  <result property="username" column="user_name"/>
  <result property="password" column="hashed_password"/>
</resultMap> 



<select id="selectUsers" resultMap="userResultMap">
  select user_id, user_name, hashed_password
  from some_table
  where id = #{id}
</select>

 

 

注:(此处说的关系针对的是sql中的两张表之间的关系)

  对于一对一以及一对多关系,用<association>标签。

  对于多对多关系,用<collection>标签

  column表示查出来的列名;property表示类中的列名

  

 

参考链接:

https://blog.csdn.net/cijiancao/article/details/124532368

 

posted @ 2023-03-06 16:35  先娶国王后取经  阅读(59)  评论(0编辑  收藏  举报