我们可能会遇到这样的情况,某个查询接口如getAllUser获取所有用户信息的接口。其中有两个字段name和age,正常我们的接口查询后就是返回"name":“xxx”,“age”:"xx"这类型的数据。但是前端说我需要name统一变成key,age统一变成value这种形式,也就是说我们用来接收查询结果的实体类中的属性名和表的字段名不对应,如果我们单纯的该实体类中的属性名,就会出现查询出一堆空的{}。
这其实就是mapper.xml中的查询结果和接收实体类中的属性没有映射到的缘故
要实现mapper.xml中查询结果的name和age字段映射到实体类UserEntity中的aa和bb属性,可以通过在mapper.xml中使用resultMap来指定结果映射规则。以下是具体步骤:
- 在mapper.xml文件中定义一个resultMap,指定查询结果字段和实体类属性的映射关系:
<resultMap id="userResultMap" type="com.example.UserEntity">
<result column="name" property="aa"/>
<result column="age" property="bb"/>
</resultMap>
- 在查询语句中引用定义的resultMap,并指定查询结果的映射规则:
<select id="getUserInfo" resultMap="userResultMap">
SELECT name, age
FROM user_table
WHERE id = #{userId}
</select>
- 在实体类UserEntity中定义对应的属性aa和bb,并提供相应的getter和setter方法:
public class UserEntity {
private String aa; // 对应name字段
private int bb; // 对应age字段
// getter和setter方法
public String getAa() {
return aa;
}
public void setAa(String aa) {
this.aa = aa;
}
public int getBb() {
return bb;
}
public void setBb(int bb) {
this.bb = bb;
}
}
通过以上步骤,可以实现mapper.xml中查询结果的name和age字段映