XML文件中一些标签和属性

了解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从入门到精通》,在此表示感谢。

如有侵权,请及时告知删除!

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值