`

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

 
阅读更多

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

----------

 

insert,update,delete 

 

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

<insert 
	id="insertAuthor" 
	parameterType="domain.blog.Author" 
	flushCache="true" 
	statementType="PREPARED" 
	keyProperty="" 
	useGeneratedKeys="" 
	timeout="20000">

 

<update 
	id="insertAuthor" 
	parameterType="domain.blog.Author" 
	flushCache="true" 
	statementType="PREPARED" 
	timeout="20000">
  
<delete 
	id="insertAuthor" 
	parameterType="domain.blog.Author" 
	flushCache="true" 
	statementType="PREPARED" 
	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 语句的示例:

<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和SQL Server),那么你可以设置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>  

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

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

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

<insert id="insertAuthor" parameterType="domain.blog.Author"> 
	<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支持STATEMENT,PREPARED 和CALLABLE 语句的映射类型

,分别代表 PreparedStatement 和CallableStatement 类型。

 

 

 

分享到:
评论

相关推荐

    mybatis笔记.zip

    使用、&lt;insert&gt;、&lt;update&gt;、&lt;delete&gt;等元素来定义SQL语句。 使用${}和#{}来插入参数,其中${}会直接替换,#{}会被预编译防止SQL注入。 5. 参数映射: 参数映射使用#{}或${}来引用参数,#{}使用PreparedStatement,$...

    mybatis知识点总结.docx

    MyBatis知识点总结 MyBatis是一款优秀的持久层框架,为Java应用程序提供了数据库...使用、&lt;insert&gt;、&lt;update&gt;、&lt;delete&gt;等元素来定义SQL语句。 使用${}和#{}来插入参数,其中${}会直接替换,#{}会被预编译防止SQL注入

    MyBatis3_用户指南(附JavaDB实例)

    SQL 映射 XML 文件.......23 Select元素....... 24 Insert、 update、 delete元素......25 Sql元素.....28 MyBatis 3 - User Guide 4 参数(Parameters)..28 resultMap元素..30 高级结果映射.32 id, result元素.......

    mybatis课件.rar

    使用、&lt;insert&gt;、&lt;update&gt;、&lt;delete&gt;等元素定义SQL语句。 参数映射和结果映射。 5. 动态SQL: 使用、、、、、等元素构建动态SQL。 动态SQL的应用场景和实例。 6. 注解配置: 使用注解代替XML映射器文件。 常用的...

    mybatis思维导图总结.zip

    SQL 映射的基本元素:、&lt;insert&gt;、&lt;update&gt;、&lt;delete&gt;。 参数映射和结果映射。 4. 动态 SQL 使用 、、、&lt;otherwise&gt; 构建动态 SQL。 动态 SQL 的应用场景和语法示例。 5. 注解配置 使用注解替代映射器文件。 常用...

    Mybatis面试题(含答案)_.pdf

    5. Xml 映射文件中,除了常见的 select|insert|update|delete 标 签之外,还有哪些标签? 6. 简述 Mybatis 的插件运行原理,以及如何编写一个插件 7. 一级、二级缓存 8. Mybatis 是否支持延迟加载?如果支持,它的...

    MyBatis-3-User-Guide用户手册(中文英文)

    insert,update,delete \ 21 sql\ 23 Parameters \ 24 resultMap \ 25 高级结果映射\ 27 id,result \ 29 支持的 JDBC 类型 \ 30 构造方法\ 30 关联\ 31 集合\ 34 鉴别器 \ 36 缓存\ 38 使用自定义缓存 ...

    springmybatis

    2. Configuration.xml 里面 的&lt;mapper resource="com/yihaomen/mybatis/model/User.xml"/&gt;是包含要映射的类的xml配置文件。 3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型...

    MyBatis 简单样例

    &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; &lt;!-- 映射关联的对象 --&gt; ...

    GoMybatis:转到ORM库。具有强大的功能,例如事务嵌套,乐观锁,逻辑删除等。 像mybatis一样去golang

    ,与大多数Java(Mybatis3,Mybatis Plus)兼容,从Java Spring Mybatis到Go语言的XML SQL文件无痛迁移(仅修改resultMap的javaType以为langType指定go语言类型) 只需一行标记即可定义AOP事务和事务传播行为 异步...

    MyBatis中文指南,MyBatis中文帮助文档

    SQL映射的XML文件 ................................................................................................... 19 select.............................................................................

    mybatis3中文文档

    SQL映射的XML文件 ................................................................................................... 19 select.............................................................................

    springmvcmybatis

    -- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --&gt; &lt;bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&gt; &lt;!-- 添加 mybatis-config配置上去。--&gt; ...

    ORM软件monalisa-orm.zip

    如果你觉得mybatis成堆的xml/mapper太繁琐,或许该软件正是你所想要的 如果你觉得现有的ORM软件总有那么些不太满意的地方,或许该软件有你所想要的 如果你觉得将SQL的查询结果映射成...

Global site tag (gtag.js) - Google Analytics