数据集合(@Results @Result @ResultMap)

Exisi 2021-03-27 07:45:56
Categories: Tags:
  • @Results 用于代替mapper.xml中的 <resultMap> 标签

 

  • @Result @Results 的子注解,有以下参数:

参数

描述

id

resultMap集合的id

column

数据库字段名称

property

实体类中的字段的参数名

javaType

resultMap的类型

jdbcType

数据库中的字段类型,intvarchar

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();

}