MyBatis -- sql映射文件具体解释

MyBatis 真正的力量是在映射语句中。
和对等功能的jdbc来比价,映射文件节省非常多的代码量。
MyBatis的构建就是聚焦于sql的。
sql映射文件有例如以下几个顶级元素:(按顺序)
cache配置给定命名空间的缓存。
cache-ref从其它命名空间引用缓存配置。
resultMap最复杂,也是最有力量的元素。用来描写叙述怎样从数据库结果集中来载入你的对象。

parameterMap已经被废弃了!老式风格的參数映射。
内联參数是首选,这个元素可能在将来被移除。
sql能够重用的SQL块,也能够被其它语句引用。

insert映射插入语句。
update映射更新语句。

delete映射删除语句。
select映射查询语句。

以下就具体描写叙述一些元素:
1、select
查询语句是使用 MyBatis 时最经常使用的元素之中的一个。


SELECT * FROM PERSON WHERE ID = #{id}

使用一个int(或Integer)类型的參数,并返回一个HashMap类型的对象,当中的键是列名,值是列相应的值。
注意參数凝视:

{id}

select
元素有非常多属性同意你配置,来决定每条语句的作用细节。

<select
id=”selectPerson” 在命名空间中唯一的标识符,能够被用来引用这条语句。



parameterType=”int” 将会传入这条语句的參数类的全然限定名或别名。


parameterMap=”deprecated” (已废弃)

resultType=”hashmap” 从这条语句中返回的期望类型的类的全然限定名或别名。
注意集合情形。那应该是集合能够包括的类型,而不能是集合本身。
使用resultTyperesultMap,但不能同一时候使用。


resultMap=”personResultMap” 命名引用外部的resultMap。返回mapMyBatis最具力量的特性,对其有一个非常好的理解的话,很多复杂映射的情形就能被攻克了。使用 resultMapresultType,但不能同一时候使用。

flushCache=”false” 将其设置为true。不论语句什么时候被调用,都会导致缓存被清空。默认值: falseuseCache=”true” 将其设置为 true。将会导致本条语句的结果被缓存。默认值: truetimeout=”10000” 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。

fetchSize=”256” 这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。
statementType=”PREPARED” STATEMENT,PREPAREDCALLABLE 的一种。这会让 MyBatis使用选择使用 StatementPreparedStatementCallableStatement。默认值: PREPAREDresultSetType=”FORWARD_ONLY” FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。

>
2、insert。 update, delete
数据变更语句 insert。 update 和 delete 在它们的实现中很相似: 


<insert
id="insertAuthor"  在命名空间中唯一的标识符,能够被用来引用这条语句。

parameterType="domain.blog.Author"  将会传入这条语句的參数类的全然限定名或别名。

flushCache="true" 将其设置为 true。不论语句什么时候被调用,都会导致缓存被清
空。默认值: falsestatementType="PREPARED"  STATEMENT,PREPAREDCALLABLE 的一种。

这会让 MyBatis使用选择使用 StatementPreparedStatementCallableStatement。默认值: PREPAREDkeyProperty=""  (仅对 insert实用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。
默认:不设置。


useGeneratedKeys=""  ( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBCgetGeneratedKeys 方法来取出由数据(比方:像 MySQLSQLServer 这种数据库管理系统的自己主动递增字段)内部生成的主键。默认值: falsetimeout="20000"  这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。
默认不设置(驱动自行处理)。
>
以下就是insert, update 和 delete 语句的演示样例:


<insert id="insertAuthor" parameterType="domain.blog.Author">
       insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio})
</insert>

<update id="updateAuthor" parameterType="domain.blog.Author">
    update Author set
    username = #{username},
    password = #{password},
    email = #{email},
    bio = #{bio}
    where id = #{id}
</update>

<delete id="deleteAuthor” parameterType="int">
     delete from Author where id = #{id}
</delete>
如前所述。插入语句有一点多,它有一些属性和子元素用来处理主键的生成。首先。假设你的数据库支持自己主动生成主键的字段(比方MySQL和SQLServer)。那么你能够设置
 useGeneratedKeys=”true”,并且设置 keyProperty 到你已经做好的目标属性上。比如。假设上面的
 Author 表已经对 id 使用了自己主动生成的列类型,那么语句能够改动为: 


<insert id="insertAuthor" parameterType="domain.blog.Author"
useGeneratedKeys=”true” keyProperty=”id”>
insert into Author (username,password,email,bio)
values (#{username},#{password},#{email},#{bio})
</insert>
3、sql 

这个元素能够被用来定义可重用的SQL代码段。能够包括在其它语句中。

<select id=”selectUsers” parameterType=”int” resultType=”hashmap”>
select <include refid=”userColumns”/>
from some_table
where id = #{id}
</select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值