数据库字段名与bean属性名不一致的处理
假如数据库中的字段名为user_name,java bean中对应的属性为name,此时若要进行查询操作,有两种解决方式:
SQL语句中使用别名
<select id="selectStudentById" resultType="student">
SELECT id,age,score,user_name name FROM t_student where id=#{id}
</select>
使用结果映射 resultMap
这里的resultMap实际上是将数据库表中的字段与实体类中的属性建立一个映射关系,名字相同的可以不用指定,这样子,即使两者名字不一致,mybatis也会根据resultMap中的映射关系正常执行。一般在较为复杂的SQL语句中会使用resultMap。
<resultMap id="BaseResultMapper" type="student">
<id column="id" property="id"/>
<result column="user_name" property="name"/>
</resultMap>
<!--注意此处使用的是 resultMap属性,不是 resultType-->
<select id="selectStudentById" resultMap="BaseResultMapper">
SELECT id,user_name,age,score FROM t_student where id=#{id}
</select>
在resultMap标签中添加了一个id子标签来指定主键,这样子可以提高mybatis的查询性能。resultMap中的type属性用来指定要映射的实体类(这里同样使用mybatis主配置文件中配置的别名)。