我们知道在之前的例子中resultType可以把查询到的结果,进行封装到pojo对象中,但是要求必须pojo类的属性名和查询到的数据库表中字段名必须一致才可以。
看一下之间的例子的写法:
比如根据id查询学生的全部信息:
<!--根据学生id查找学生的全部信息-->
<select id="getStuById" resultType="com.wst.pojo.Stu" parameterType="int">
/*定义sql*/
select * from stu where id = #{id};
</select>
在上面的sql语句中:
select * from stu where id = #{id};
等同于:
select id,name,age,address from stu where id = #{id};
在来看一下对应的pojo类:
我们发现属性名与字段名是一一对应的!
如果sql查询到的字段与pojo类的属性名不一致的时候,那么我们就需要使用resultMap将字段名与属性名进行一一的对应起来,进行手动的配置,才能将结果映射到pojo中。
加入我们把上述的pojo——Stu类的属性address改为add,其他不做任何改变,测试结果如下:
很明显我们发现了问题的存在!!!
使用resultMap方式:
- 我们先在Mapper文件中,配置基本的sql语句:
- 配置resultMap标签,映射不同的数据库字段与pojo属性名:
经过上面的配置就把查询到的结果映射到pojo类中了。
用resultMap实现将查询结果映射为复杂类型的pojo在以后的文章中将会介绍。