XML配置文件
resultMap 是 MyBatis 提供的用于自定义结果集映射的功能。你可以在 MyBatis 的 XML 配置文件中定义 resultMap来指定数据库字段和对象属性的映射关系。
<resultMap id="UserResultMap" type="com.example.User">
<result column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<!-- 其他字段的映射 -->
</resultMap>
<select id="getUserById" resultMap="UserResultMap">
SELECT user_id, user_name FROM users WHERE user_id = #{id}
</select>
注解
如果你使用的是注解方式定义 MyBatis 映射,可以使用 @Results 注解来指定字段的映射关系。
public interface UserMapper {
@Select("SELECT user_id, user_name FROM users WHERE user_id = #{id}")
@Results({
@Result(column = "user_id", property = "userId"),
@Result(column = "user_name", property = "userName")
// 其他字段的映射
})
User getUserById(int id);
}
使用 @ConstructorArgs 注解
如果你的对象是通过构造函数初始化的,可以使用 @ConstructorArgs 注解来指定构造函数参数的映射关系。
public class User {
private int userId;
private String userName;
public User(int userId, String userName) {
this.userId = userId;
this.userName = userName;
}
}
public interface UserMapper {
@Select("SELECT user_id, user_name FROM users WHERE user_id = #{id}")
@ConstructorArgs({
@Arg(column = "user_id", javaType = int.class),
@Arg(column = "user_name", javaType = String.class)
})
User getUserById(int id);
}
使用别名
有时候可以直接在 SQL 语句中使用别名来解决字段名不一致的问题。
public interface UserMapper {
@Select("SELECT user_id AS userId, user_name AS userName FROM users WHERE user_id = #{id}")
User getUserById(int id);
}