mybatis 在进行 select 查询操作的时候,返回类型可以用 resultType,也可以用 resultMap;
resultType 是直接表示返回类型的(一般返回为基本数据类型时使用,当查询的是一条SQL数据时,且这条SQL数据的每个字段都和一个Javabean 中的属性名 与之对应,mybatis 会通过 autoMapping ,将每个字段的值赋给 Javabean),而当字段名和属性名不一致时,这时可以使用 resultMap
resultMap 是对外部的一个 ResultMap 标签的引用,并且 resultType 跟 resultMap 不能同时存在。
一个简单 resultMap 查询
select * from teacher where id=#{id}
当 SQL 中字段名 和 javabeen Teacher 的属性名一致时,自动映射写法如下
select * from teacher where id=#{id}
resultMap 常用标签属性说明
id:对应中 resultMap 的名称
type:type就是指定映射到哪一个实体类中
column:在数据库中的列名称
property:在实体类定义的属性名称
associattion :实体类对象包含另一个对象时,例如:一个学生对应一个老师 student =》teacher
collection :实体类对象包含的是一个集合时,例如:一个老师对应一群学生 teacher =》List
association(一对一) 和 collection(一对多)
association:一个学生对应一个老师 student =》teacher
select * from student
collection:一个老师对应一群学生 teacher =》List
select * from teacher
select:用于加载复杂类型属性的映射语句的 ID,它会从 column 属性指定的列中检索数据,作为参数传递给目标 select 语句。 具体请参考下面的例子。注意:在使用复合主键的时候,你可以使用column="{prop1=col1,prop2=col2}"这样的语法来指定多个传递给嵌套 Select 查询语句的列名。这会使得prop1和prop2作为参数对象,被设置为对应嵌套 Select 语句的参数。
SELECT * FROM BLOG WHERE ID = #{id}
SELECT * FROM AUTHOR WHERE ID = #{id}
property:映射到列结果的字段或属性。 -----------------指的是 javaBean 中的属性 类型(一个javaBeen 中的属性可以是基本数据类型也可以是 Object)
javaType:一个 Java 类的完全限定名,或一个类型别名。---------------------指的是一个 JavaBean class类型( A a = new a(); 理解为 A 类型)