MyBatis insert操作插入,返回主键from官方
下面就是 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>
如前所述,插入语句有一点多,它有一些属性和子元素用来处理主键的生成。
首先,如果你的数据库支持自动生成主键的字段(比如 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>
PS:以上selectKey里你可以修改为其它的主键生成方式如
SELECT user_info$seq.NEXTVAL FROM DUAL
在上面的示例中,selectKey 元素将会首先运行,Author 的 id 会被设置,然后插入语句 会被调用。 这给你了一个简单的行为在你的数据库中来处理自动生成的主键, 而不需要使你 的 Java 代码变得复杂。
selectKey 元素描述如下:
<selectKeykeyProperty="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 insert操作插入,返回主键from官方相关推荐
- Mybatis insert数据时返回主键
Mybatis insert 时候默认返回行数,想要获取主键,可以在写xml时候添加属性配置,以MySQL为例 keyProperty="id" useGeneratedKeys= ...
- mybatis添加记录时返回主键id
参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作. 在使用mybatis作为ORM组件时,可以很方便地达到这 ...
- MyBatis insert 获取自增主键
1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...
- MyBatis在insert插入操作时返回主键ID的配置
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过Mapper.XML配置的方式来完成这个功能. 在 INSER ...
- MyBatis在insert插入操作时返回主键ID
数据库为MySql时: <insert id="insert" parameterType="com.test.User" keyProperty=&q ...
- SQL执行insert into后返回主键ID
1 select @@identity 2 select SCOPE_IDENTITY() 3 select IDENT_CURRENT('table') 注解: @@IDENTITY 返回当前会话的 ...
- Mybatis批量插入,返回主键ID不成功,巨坑
一.场景说明 批量插入,返回主键ID报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibati ...
- 160613、MyBatis insert操作返回主键
在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能,针对Sequence主键而言,在执行 ...
- 使用mybatis插入数据(insert)时返回主键的问题
使用mybatis做插入操作时,想要获取新增记录的主键,我发现现在的方式和以前的方式有所区别,即以前是直接通过方法返回,现在是将主键设置在数据实体对象中. 下面对mybatis进行insert时返回主 ...
最新文章
- 参加海峡两岸城市地理信息系统论坛2010 年会(一张图、规划信息化和空间句法的碎碎念)...
- 3 月,跳还是不跳?
- u-boot之怎么实现分区
- Codeforces Round #325 (Div. 2) Laurenty and Shop 模拟
- 常用Redis命令总结
- 通过rxjs的一个例子, 来学习SwitchMap的使用方法
- Java实现两个csv文件的对比_Java实现CSV文件差异对比
- hql 查询关联对象_在spring data jpa中如何做报表统计查询?
- JS中的setInterval 函数体带参数f方法
- [3]java1.8线程池—ThreadPoolExecutor
- Windows Embedded 7 最简便EWF系统制作方案
- 【蓝牙串口无线烧写程序】适用于STM32F103和STM32F107的Bootloader
- 要做好云计算所需要的成本,主要分为哪六大成本?
- 计算机表格折线图添加图例,如何将Excel表格中插入的折线图中的圆圈设置为方块或三角形...
- 群晖docker搭建halo个人博客
- 企业运维岗位笔试真题
- rmd中无法打开链结r_十个超级好用的R语言编程技巧,一般人绝不知道!
- 微信小程序引入weui的操作
- 功能点算法及在软件测试中的应用
- python输入国家显示首都名_Java各国首都列表