- @Results 用于代替mapper.xml中的 <resultMap> 标签
- @Result 是 @Results 的子注解,有以下参数:
参数 |
描述 |
id |
resultMap集合的id |
column |
数据库字段名称 |
property |
实体类中的字段的参数名 |
javaType |
resultMap的类型 |
jdbcType |
数据库中的字段类型,int、varchar等 |
typeHandler |
设置类型处理器 |
one |
一对一查询,参数 @One。一个关联,和 <association>类似 当我们需要通过查询到的一个字段值作为参数,去执行另外一个方法来查询关联的内容,而且两者是一对一关系时,可以使用@One注解来便捷的实现 |
many |
一对多查询,参数@Many,类似one,查询多条数据。集合关联,和 <collection>类似 |
- @ResultMap 用于根据 id 引用 @Results
参数 |
描述 |
value |
resultMap集合的id |
示例
public interface PersonMapper {
@Select({"select id, name, class_id from my_student"})
@Results( id="select",{
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="name", property="name", jdbcType=JdbcType.VARCHAR),
@Result(column="class_id", property="classId", jdbcType=JdbcType.INTEGER)
})
List<Person> selectAll();
@ResultMap("select")
List<Persosn> selectAll();
}
注
- MyBatis 3.5.4 后 @Results 被优化弃用,现在可以直接在最外层使用 @Arg
示例
public interface PersonMapper {
@Select({"select id, name, class_id from my_student"})
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="name", property="name", jdbcType=JdbcType.VARCHAR),
@Result(column="class_id", property="classId", jdbcType=JdbcType.INTEGER)
List<Person> selectAll();
}