您的位置:首页 > 其它

MyBatis3.2.4映射配置:insert 、update 和 delete

2014-01-13 23:41 295 查看
insert
、update 和 delete

<insert
 
id="insertAuthor"
 
parameterType="domain.blog.Author"
 
flushCache="true"
 
statementType="PREPARED"
 
keyProperty=""
 
keyColumn=""
 
useGeneratedKeys=""
 
timeout="20">
 
<update
 
id="insertAuthor"
 
parameterType="domain.blog.Author"
 
flushCache="true"
 
statementType="PREPARED"
 
timeout="20">
 
<delete
 
id="insertAuthor"
 
parameterType="domain.blog.Author"
 
flushCache="true"
 
statementType="PREPARED"
 
timeout="20">
 
属性
属性
描述
id
在命名空间中唯一的标识符,
可以被用来引用这条语句。
parameterType
将会传入这条语句的参数类的完全限定名或别名。

parameterMap

这是引用外部 parameterMap
的已经被废弃的方法。使用内联参数
映射和 parameterType
属性。

flushCache
此设置为true,每当执行这个语句,将导致本地和二级缓存被刷新。默认值:false。

timeout
这个设置驱动程序等待数据库返回请求结果,
并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。

statementType
STA,
TEMENT,
PREPARED 或 CALLABLE
的一种。这会让 MyBatis
使用选择使用 Statement,PreparedStatement
或 CallableStatement。
默认值:PREPARED。

useGeneratedKeys
(仅对 insert
有用)



诉 MyBatis
使
用 JDBC
的 getGeneratedKeys
方法来取出由数据(比如:像 MySQL
和 SQL Server
这样的数据库管理系统的自动递增字段)内部生成的主键。
默认值:false。

keyProperty
(仅对 insert
有用)
标记一个属性, MyBatis
会通过 getGeneratedKeys
或者通过 insert
语句的 selectKey
子元素设置它的值。
默认:
不设置。

keyColumn
(insert only) Sets the name of the column in the table with a generated key. This is only required in certain databases (like PostgreSQL) when the key column is not the first column in the table.

databaseId
In case there is a configured databaseIdProvider, MyBatis will load all statements with no databaseId attribute or with a databaseId that matches the current one. If case the same statement if found
with and without the databaseId the latter will be discarded.
 
示例
<insert
id="insertAuthor">

insert into Author (id,username,password,email,bio)

values (#{id},#{username},#{password},#{email},#{bio})
</insert>
 
<update
id="updateAuthor">

update Author set

username = #{username},

password = #{password},

email = #{email},

bio = #{bio}

where id = #{id}
</update>
 
<delete
id="deleteAuthor">

delete from Author where id = #{id}
</delete>
 
自动生成主键
如果数据库支持自动生成主键,可以设置 useGeneratedKeys= "true",
而且设置 keyProperty
到已经做好的目标属性上。例如,如果上面的 Author
表已经对 id
使用了自动生成的列类型,那么语句可以修改为:

<insert
id="insertAuthor"
useGeneratedKeys="true"
keyProperty="id">

insert into Author (username,password,email,bio)

values (#{username},#{password},#{email},#{bio})
</insert>
MyBatis 有另外一种方法来处理数据库不支持自动生成类型,或者可能 JDBC 驱动不支 持自动生成主键时的主键生成问题。
<insert
id="insertAuthor">

<selectKey keyProperty="id"
resultType="int"
order="BEFORE">

select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1

</selectKey>

insert into Author

(id, username, password, email,bio, favourite_section)

values

(#{id}, #{username}, #{password}, #{email}, #{bio},

#{favouriteSection,jdbcType=VARCHAR})
</insert>
在上面的示例中,selectKey
元素将会首先运行,Author
的 id
会被设置,然后插入语句会被调用。
这给你了一个简单的行为在你的数据库中来处理自动生成的主键,
而不需要使你的 Java
代码变得复杂。

 
selectKey 元素
<selectKey
 
keyProperty="id"
 
resultType="int"
 
order="BEFORE"
 
statementType="PREPARED">
属性
描述
keyProperty
selectKey
语句结果应该被设置的目标属性。

resultType
结果的类型。MyBatis
通常可以算出来,但是写上也没有问题。 MyBatis
允许任何简单类型用作主键的类型,
包括字符串。

order
这可以被设置为 BEFORE
或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,
设置 keyProperty
然后执行插入语句。
如果
设置为 AFTER,那么先执行插入语句,然后是
selectKey 元素-
这和如 Oracle
数据库相似,
可以在插入语句中嵌入序列调用。

statementType
和前面的相同,MyBatis
支持 STA TEMENT ,PREPARED
和 CALLABLE
语句的映射类型,分别代表 PreparedStatement
和 CallableStatement
类型。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MyBatis
相关文章推荐