介绍:
在SQL标签中使用resultType,从这条语句中返回的期望类型的类的完全限定名或别名。
注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。
可以使用 resultType 或 resultMap,但不能同时使用。
1.简单类型(8个基本+String)
2.输出参数为实体对象类型
<select id="queryPersonById" parameterType="int" resultType="person">
select * from person where id=#{xxx}
</select>
在接口中:
Person queryPersonById(int id);
3.输出参数为实体对象类型的集合
虽然输出类型为集合,但是resultType依然写 集合的元素类型(resyltType=“Person”)。
但是在接口中,则要返回 List<Person> ,从而实现了当语句被调用时返回集合。
<select id="queryPersonById" parameterType="int" resultType="person">
select * from person where id=#{xxx}
</select>
在接口中(和第2条的区别就在于接口返回值的实现不同)
List<Person> queryPersonById(int id);
4.输出参数类型为HashMap
HashMap本身是一个集合,可以存放多个元素。但是当返回值为HashMap时,只能返回一个实体对象,因为HashMap中的元素分别对应了实体类对象的多个属性。
根据id返回对应学生的所有属性和值
<select id="queryPersonByIdWithHashMap" parameterType="int" resultType="HashMap">
select * from person where id=#{id}
</select>
HashMap<String,Object> queryPersonByIdWithHashMap(int id);
PersonMapper personMapper = session.getMapper(PersonMapper.class);
HashMap<String, Object> personMap = personMapper.queryPersonByIdWithHashMap(1001);
要用HashMap返回多个对象,可以在接口的返回值中使用List,参照实体对象类型的集合 。
补充
注意:当实体类的属性、数据表的字段: 类型、名字不同时(stuno,id),除了使用resultMap以外,还可以使用resultType+HashMap。
a.resultMap
<resultMap type="Person" id="queryPersonByIdMap">
<!-- 指定类中的属性 和 表中的字段 对应关系 -->
<id property="No" column="id" />
<result property="Name" column="name" />
</resultMap>
b.resultType+HashMap
select 表的字段名 "类的属性名" from... 来制定字段名 和属性名的对应关系
<select id="queryPersonByIdWithHashMap" parameterType="int" resultType="Person" >
select id "No",name "Name" from Person where id = #{id}
</select>
注意: 如果如果10个字段,但发现 某一个字段结果始终为默认值(0,0.0,null),则可能是 表的字段 和 类的属性名字写错。