myBatis3之SQL映射的XML文件(insert,update,delete 元素)

转载 2016年05月31日 18:10:06

myBatis3之SQL映射的XML文件(insert,update,delete 元素)

----------

 

insert,update,delete 

 

数据变更语句insert,update和delete在它们的实现中非常相似:

Xml代码  收藏代码
  1. <insert   
  2.     id="insertAuthor"   
  3.     parameterType="domain.blog.Author"   
  4.     flushCache="true"   
  5.     statementType="PREPARED"   
  6.     keyProperty=""   
  7.     useGeneratedKeys=""   
  8.     timeout="20000">  

 

Xml代码  收藏代码
  1. <update   
  2.     id="insertAuthor"   
  3.     parameterType="domain.blog.Author"   
  4.     flushCache="true"   
  5.     statementType="PREPARED"   
  6.     timeout="20000">  
  
Xml代码  收藏代码
  1. <delete   
  2.     id="insertAuthor"   
  3.     parameterType="domain.blog.Author"   
  4.     flushCache="true"   
  5.     statementType="PREPARED"   
  6.     timeout="20000">  
  
属性  描述 
id  在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType  将会传入这条语句的参数类的完全限定名或别名。
flushCache  将其设置为 true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false。
timeout  

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

(驱动自行处理)

statementType 

STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBat is使用选择使用 Statement,,PreparedStatement 或 CallableStatement。默认值:PREPARED。

useGeneratedKeys 

(仅对insert有用)这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据

比如:像MySQL和SQL Server 这样的数据库管理系统的自动递增字段)内部生成的主键。

默认值:false。

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

下面就是 insert,update 和 delete 语句的示例:

Xml代码  收藏代码
  1. <insert id="insertAuthor" parameterType="domain.blog.Author">   
  2.     insert into Author (id,username,password,email,bio)   
  3.     values (#{id},#{username},#{password},#{email},#{bio})   
  4. </insert>   
  5. <update id="updateAuthor" parameterType="domain.blog.Author">   
  6.     update Author set   
  7.         username = #{username},   
  8.         password = #{password},   
  9.         email = #{email},   
  10.         bio = #{bio}   
  11.     where id = #{id}   
  12. </update>   
  13. <delete id="deleteAuthor” parameterType="int">   
  14.     delete from Author where id = #{id}   
  15. </delete>    

它有一些属性和子元素用来处理主键的生成。首先,如果你的数据库支持自动生成主键的字段(比如MySQL和SQL Server),那么你可以设置useGeneratedKeys=”true”,而且设置keyProperty到你已经做好的目标属性上。例如,如果上面的Author表已经对id使用了自动生成的列类型,那么语句可以修改为:

Xml代码  收藏代码
  1. <insert id="insertAuthor" parameterType="domain.blog.Author"   
  2.     useGeneratedKeys=”true” keyProperty=”id”>   
  3.     insert into Author (username,password,email,bio)   
  4.     values (#{username},#{password},#{email},#{bio})   
  5. </insert>    

MyBatis有另外一种方法来处理数据库不支持自动生成类型,或者可能JDBC驱动不支持自动生成主键时的主键生成问题。 

这里有一个简单(甚至很傻)的示例,它可以生成一个随机ID可能你不会这么做,但是这展示了MyBatis处理问题的灵活性,

因为它并不真的关心ID的生成: 

Xml代码  收藏代码
  1. <insert id="insertAuthor" parameterType="domain.blog.Author">   
  2.     <selectKey keyProperty="id" resultType="int" order="BEFORE">   
  3.         select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1   
  4.     </selectKey>   
  5.     insert into Author(id, username, password, email,bio, favourite_section)   
  6.     values(#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})   
  7. </insert>    

在上面的示例中,selectKey元素将会首先运行,Author的id会被设置,然后插入语句会被调用。这给你了一个简单的行为在你的数据库中来处理自动生成的主键,而不需要使你的Java代码变得复杂。 selectKey 元素描述如下: 

Xml代码  收藏代码
  1. <selectKey   
  2.     keyProperty="id"   
  3.     resultType="int"   
  4.     order="BEFORE"   
  5.     statementType="PREPARED">   
属性 描述
keyProperty  selectKey 语句结果应该被设置的目标属性。 
resultType 

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

主键的类型,包括字符串。

order 

这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,

设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是

selectKey 元素,这和Oracle 数据库相似,可以在插入语句中嵌入序列调用。

statementType 

和前面的相同,MyBatis支持STATEMENT,PREPARED 和CALLABLE 语句的映射类型

,分别代表 PreparedStatement 和CallableStatement 类型。

   
 

 

 

ibatis中SQL映射配置文件中动态SQL语句语法

有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。使用Oracle的序列、mysq...
  • doris_crazy
  • doris_crazy
  • 2014年01月16日 16:55
  • 9458

Mybatis系列(四)映射文件

Mybatis系列(四)映射文件 引言 Mybatis的真正强大,在于她对SQL的映射,这也是她吸引人的地方。实现相同的功能,她要比直接使用JDBC省去95%的代码量。而且将SQL语句独立在Java代...
  • chris_mao
  • chris_mao
  • 2015年09月29日 22:47
  • 10486

MyBatis学习(三):解析MyBatis的SQL映射XML文件写法和使用原理

上面的两篇文章,分别是MyBatis的入门小程序和MyBatis的配置XML解析,有需要的可以先去看看这两篇文章,本篇文章,会来讲解SQL映射XML文件的写法以及如何使用。 MyBatis真正的力量...
  • daguairen
  • daguairen
  • 2016年12月20日 16:55
  • 5405

MyBatis——XML映射文件—更新(Mapper XML文件——Insert ,Update,delete)

数据变更语句 insert,update 和 delete 的实现非常接近:
  • m0_37530301
  • m0_37530301
  • 2017年04月18日 10:56
  • 872

04 Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍

官方说:"MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近...
  • mmd0308
  • mmd0308
  • 2017年04月07日 11:50
  • 325

mybatis-映射器-insert元素,update,delete元素

insert元素,相对于select元素来说,简单了许多。mybatis会在执行插入之后返回一个整数,以表示你进行操作后插入的记录数。insert元素配置详解,如下:        id:它和Mapp...
  • wj903829182
  • wj903829182
  • 2017年05月28日 23:48
  • 344

深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

上篇文章《深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置》简单地给mybatis的配置画上了一个句号。那么从本篇文章开始,将会介绍mappe...
  • LXB15959168136
  • LXB15959168136
  • 2016年07月02日 22:02
  • 1177

深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

上篇文章《深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置》简单地给mybatis的配置画上了一个句号。那么从本篇文章开始,将会介绍mappe...
  • u010122002
  • u010122002
  • 2015年03月19日 19:03
  • 1137

Mybatis下mapper映射文件配置之insert、update、delete

本篇文章将简单介绍 insert, update, delete 的配置及使用 ,以后会对mybatis的源码进行深入讲解。 相信,看到insert, update, delete, 我们就知道...
  • Summer_YuXia
  • Summer_YuXia
  • 2016年11月15日 15:26
  • 8380

深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

上篇文章《深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置》简单地给mybatis的配置画上了一个句号。那么从本篇文章开始,将会介绍mappe...
  • yin767833376
  • yin767833376
  • 2016年06月15日 10:15
  • 283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:myBatis3之SQL映射的XML文件(insert,update,delete 元素)
举报原因:
原因补充:

(最多只允许输入30个字)