了解XML中一些属性和标签。
<mapper namespace="Interface.UserMapper">
<resultMap id="userMap" type="pojo.User">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
<result property="userEmail" column="user_email"/>
<result property="headImg" column="head_Img" jdbcType="BLOB"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
</resultMap>
<select id="selectById" resultMap="userMap">
select * from t_user where id = #{id}
</select>
</mapper>
select和resultMap是mapper的两个不同的标签。
<select></select>:映射查询语句使用的标签。
select标签中我们写了两个属性,分别是id和resultMap。
id:命名空间的中唯一标识符,可用来代表这条语句。
resultMap:用于设置返回值的类型和映射关系。
select标签中的select * from table where id = #{id}是查询语句。
#{id}:Mybatis SQL中使用预编译参数的一种方式,大括号中的id是传入的参数名。
resultMap标签用于配置Java对象的属性和查询结果列的对应关系,通过resultMap中配置的column和property可以将查询列的值映射到type对象的属性上,因此当我们使用select *查询所有列的时候,Mybatis也可以将结果正确地映射到User对象上。
resultMap是一种很重要的配置结果映射的方法,resultMap中包含的所有属性如下:
id:必填,并且唯一。在select标签中,resultMap指定的值即为此处的id值。
type:必填,用于配置查询列所映射到的Java对象类型。
extends:选填,可以配置当前的resultMap继承自其他的resultMap,属性值为继承resultMap的id。
autoMapping:选填,可选值为true或false,用于配置是否启用非映射字段(没有在resultMap中配置的字段)的自动映射功能,该配置可以覆盖全局的autoMappingBehavior配置。
这些是resultMap的属性,我们只使用了id和type属性。那么resultMap还有如下标签:
constructor:配置使用构造方法注入结果,包含以下两个子标签。
idArg:id参数,标记结果作为id(唯一值),可以帮助提高整体性能。
arg:注入到构造方法的一个普通结果。
id:一个id结果,标记结果作为id(唯一值),可以帮助提高整体性能。
result:注入到Java对象属性的普通结果。这个是我们使用的标签。
association:一个复杂的类型关联,许多结果将包成这种类型。
collection:复杂类型的集合。
discriminator:根据结果值来决定使用哪个结果映射。
case:基于某些值的结果映射。
我们使用的是resultMap的id和result标签
constructor标签通过构造方法注入属性的结果值。构造方法中的idArg、arg参数分别对应着resultMap中的id、result标签,它们的含义相同,只是注入方式不同。
resultMap中的id标签和result标签包含的属性相同,不同的地方在于id代表的是主键的字段,它们的属性值是通过setter()方法注入的。
然后我们再来看一下id和result标签中包含的属性。
column:从数据库中得到的列名,或者是列的别名。
property:映射到列结果的属性。可以映射简单的如“username”这样的属性,也可以映射一些复杂对象中的属性,例如“address.street.number”,这会通过“.”方式的属性嵌套赋值。
column和property是id和result标签的两个相同的属性。
javaType:一个Java类的完全限定名,或一个类型别名(通过typeAlias配置或者默认的类型)。如果映射到一个JavaBean,Mybatis通常可以自动判断属性的类型。如果映射到HashMap,则需要明确指出javaType属性。
jdbcType:列对应的数据库类型。JDBC类型仅仅需要对插入、更新、删除操作可能为空的列进行处理。这是JDBC jdbcType的需要,而不是Mybatis的需要。
typeHandler:使用这个属性可以覆盖默认的类型处理器。这个属性是类的完全限定名或类型别名。
以上就是XML中各标签的属性值的说明。
本文内容参考自刘增辉老师编写的课本《MyBatis从入门到精通》,在此表示感谢。
如有侵权,请及时告知删除!