mybatis官网参考文档-MapperXML_insert, update 和 delete(版本: 3.4.6-SNAPSHOT)
来源:互联网 发布:mac版lol美服改国服 编辑:程序博客网 时间:2024/05/16 19:26
XML 映射配置文件
insert, update 和 delete
数据变更语句 insert,update 和 delete 的实现非常接近:
<insert id="insertAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" keyProperty="" keyColumn="" useGeneratedKeys="" timeout="20"><update id="updateAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" timeout="20"><delete id="deleteAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" timeout="20">
下面就是 insert,update 和 delete 语句的示例:
<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>
如前所述,插入语句的配置规则更加丰富,在插入语句里面有一些额外的属性和子元素用来处理主键的生成,而且有多种生成方式。
首先,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置到目标属性上就OK了。例如,如果上面的 Author 表已经对 id 使用了自动生成的列类型,那么语句可以修改为:
<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id"> insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio})</insert>
如果你的数据库还支持多行插入, 你也可以传入一个Authors数组或集合,并返回自动生成的主键。
<insert id="insertAuthor" useGeneratedKeys="true" keyProperty="id"> insert into Author (username, password, email, bio) values <foreach item="item" collection="list" separator=","> (#{item.username}, #{item.password}, #{item.email}, #{item.bio}) </foreach></insert>
对于不支持自动生成类型的数据库或可能不支持自动生成主键 JDBC 驱动来说,MyBatis 有另外一种方法来生成主键。
这里有一个简单(甚至很傻)的示例,它可以生成一个随机 ID(你最好不要这么做,但这里展示了 MyBatis 处理问题的灵活性及其所关心的广度):
<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">
sql
这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如:
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>
这个 SQL 片段可以被包含在其他语句中,例如:
<select id="selectUsers" resultType="map"> select <include refid="userColumns"><property name="alias" value="t1"/></include>, <include refid="userColumns"><property name="alias" value="t2"/></include> from some_table t1 cross join some_table t2</select>
属性值可以用于包含的refid属性或者包含的字句里面的属性值,例如:
<sql id="sometable"> ${prefix}Table</sql><sql id="someinclude"> from <include refid="${include_target}"/></sql><select id="select" resultType="map"> select field1, field2, field3 <include refid="someinclude"> <property name="prefix" value="Some"/> <property name="include_target" value="sometable"/> </include></select>
- mybatis官网参考文档-MapperXML_insert, update 和 delete(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-入门(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-MapperXML_select(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_properties(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_settings(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_typeAliases(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_typeHandlers(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_对象工厂(objectFactory)(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_插件(plugins)(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_配置环境(environments)(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_databaseIdProvider(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-XML配置_映射器(mappers)(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-MapperXML_参数(Parameters)(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-MapperXML_Result Maps(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-MapperXML_自动映射(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-MapperXML_缓存(版本: 3.4.6-SNAPSHOT)
- mybatis官网参考文档-动态 SQL(版本: 3.4.6-SNAPSHOT)
- MyBatis-insert, update and delete
- pat乙级考了55分。。。
- 小程序页面跳tabBar页面传参没有效果用缓存
- 结构体
- mybatis官网参考文档-MapperXML_select(版本: 3.4.6-SNAPSHOT)
- 171210之文件上传下载功能实现
- mybatis官网参考文档-MapperXML_insert, update 和 delete(版本: 3.4.6-SNAPSHOT)
- 盘点2017年度AI领域大事件
- mybatis官网参考文档-MapperXML_参数(Parameters)(版本: 3.4.6-SNAPSHOT)
- 我与机器斗争过但失败了:与深蓝“人机大战”20年,卡斯帕罗夫TED演讲
- 《2017中国大数据及AI人才发展报告》均薪38万,招聘猛增6倍
- 语音识别现状与工程师必备技能
- STL迭代器
- 一个戏精程序员的内心独白...
- 6岁会编程,14岁就被麻省理工录取,神童谎言是如何诞生的?