xml映射文件指的是配置SQL的xml配置文件,它配置了操作实体类的接口方法与对应SQL的映射关系,本文只是简单记了一点学习笔记,想要了解更多,可以参考MyBatis中文文档 https://mybatis.org/mybatis-3/zh/sqlmap-xml.html
parameterType配置
parameterType表示id属性所代表的方法需要传入的参数的类型。
int
数字类型。
类
当parameterType的值是一个类时,需要指定该类的完整路径(对maven项目来说的,就是相对于 src/main/java
的路径),表示传入的参数类型为该类。直接指定parameterType为类时有一个缺点:为了传递这个类的实例,不得不new一个实例出来,如果实例化这个类需要指定许多SQL中用不到的属性,代码就会变得非常麻烦,这时候可以考虑将parameterType指定为map类型。
map
当parameterType的值是一个map时,表示传入的参数是map类型,此时SQL中的 #{}
只需要填入map中的key即可。如果传入的实例在实例化时需要多个SQL用不到的参数,或者需要传递多个参数时,可以考虑使用map类型。
resultMap配置
mapper.xml映射文件中数据库字段名和实体类的属性名的映射关系是根据查询结果来进行映射的,如果结果集中字段名和属性名一致,则映射成功, 不一致则会给对应的对象属性赋予null值。当数据库中的字段名和实体类的属性名不一致时,有两种处理方式:一种是使用 as
语法让查询结果的字段名与实体类的属性名保持一致,另一种是配置resultMap标签。具体见示例:
第一种方式:使用as
实体类的属性:id,name,password
public class User {
private int id;
private String name;
private String password;
}
数据库中的字段为:id,name,pwd。此时可以使用as对pwd的查询结果起一个别名password,与实体类的属性名保持一致。
<mapper namespace="com.mb.dao.UserMapper">
<select id="getUserList" resultType="com.mb.pojo.User">
select id,name,pwd as password from mybatis.user;
</select>
</mapper>
第二种方式:配置resultMap
使用resultMap进行映射,见如下示例:select标签的resultMap属性值就是resultMap标签的id属性值,resultMap标签的type属性值为对应实体类,result标签中column为数据库字段名,property为实体类的属性名。注意,如果字段名和属性名是一样的,则可以不用配置。
<mapper namespace="com.mb.dao.UserMapper">
<resultMap id="UserMap" type="com.mb.pojo.User">
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserList" resultMap="UserMap">
select id, name, pwd from mybatis.user;
</select>
</mapper>