下面就是 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官方相关推荐

  1. Mybatis insert数据时返回主键

    Mybatis insert 时候默认返回行数,想要获取主键,可以在写xml时候添加属性配置,以MySQL为例 keyProperty="id" useGeneratedKeys= ...

  2. mybatis添加记录时返回主键id

    参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作. 在使用mybatis作为ORM组件时,可以很方便地达到这 ...

  3. MyBatis insert 获取自增主键

    1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...

  4. MyBatis在insert插入操作时返回主键ID的配置

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过Mapper.XML配置的方式来完成这个功能. 在 INSER ...

  5. MyBatis在insert插入操作时返回主键ID

    数据库为MySql时:  <insert id="insert" parameterType="com.test.User" keyProperty=&q ...

  6. SQL执行insert into后返回主键ID

    1 select @@identity 2 select SCOPE_IDENTITY() 3 select IDENT_CURRENT('table') 注解: @@IDENTITY 返回当前会话的 ...

  7. Mybatis批量插入,返回主键ID不成功,巨坑

    一.场景说明 批量插入,返回主键ID报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibati ...

  8. 160613、MyBatis insert操作返回主键

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能,针对Sequence主键而言,在执行 ...

  9. 使用mybatis插入数据(insert)时返回主键的问题

    使用mybatis做插入操作时,想要获取新增记录的主键,我发现现在的方式和以前的方式有所区别,即以前是直接通过方法返回,现在是将主键设置在数据实体对象中. 下面对mybatis进行insert时返回主 ...

最新文章

  1. 参加海峡两岸城市地理信息系统论坛2010 年会(一张图、规划信息化和空间句法的碎碎念)...
  2. 3 月,跳还是不跳?
  3. u-boot之怎么实现分区
  4. Codeforces Round #325 (Div. 2) Laurenty and Shop 模拟
  5. 常用Redis命令总结
  6. 通过rxjs的一个例子, 来学习SwitchMap的使用方法
  7. Java实现两个csv文件的对比_Java实现CSV文件差异对比
  8. hql 查询关联对象_在spring data jpa中如何做报表统计查询?
  9. JS中的setInterval 函数体带参数f方法
  10. [3]java1.8线程池—ThreadPoolExecutor
  11. Windows Embedded 7 最简便EWF系统制作方案
  12. 【蓝牙串口无线烧写程序】适用于STM32F103和STM32F107的Bootloader
  13. 要做好云计算所需要的成本,主要分为哪六大成本?
  14. 计算机表格折线图添加图例,如何将Excel表格中插入的折线图中的圆圈设置为方块或三角形...
  15. 群晖docker搭建halo个人博客
  16. 企业运维岗位笔试真题
  17. rmd中无法打开链结r_十个超级好用的R语言编程技巧,一般人绝不知道!
  18. 微信小程序引入weui的操作
  19. 功能点算法及在软件测试中的应用
  20. python输入国家显示首都名_Java各国首都列表

热门文章

  1. 自学几小时,斯坦福AI推测并复现了元素周期表 | 华裔团队研究
  2. MIT发布软体机器鱼,卧底鱼群大计可成
  3. 自动驾驶公司Momenta完成B2轮融资,凯辉领投GGV跟投
  4. SVD在推荐系统中的应用
  5. Bootstrap Wizard 多步表单控件
  6. K/3 WISE期初余额调整和出库异常调整的差别
  7. 深入浅出学Spring Data JPA
  8. LSJ_NHibernate第一章 NHibernate介绍
  9. eclipse中点不出来提示
  10. iphone @selector带参数问题