mybatis 做 insert操作的时候返回插入的那条数据的id

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:吃丸子的小鹿
链接:http://www.zhihu.com/question/20810321/answer/16843223
来源:知乎

对于支持自动生成主键的数据库(如SQL Server),可以采用以下方式

<insert id="xxx" parameterType="yyy" useGeneratedKeys="true" keyProperty="id">
....
</insert>

对于不支持自动生成主键(如Oracle),可以采用以下方式

<insert id="xxx" parameterType="yyy">
  <selectKey keyProperty="id" resultType="long" order="BEFORE">
    select my_seq.nextval from dual
  </selectKey>
  ....
</insert>

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:林小米
链接:http://www.zhihu.com/question/20810321/answer/17086431
来源:知乎

useGeneratedKeys="true" 可以获取自增长的ID 只支持具有自增长方式的那种数据库(mysql, mssql 等 但 oracle 就不支持了 )
所以可以使用selectKey来获取

<insert id="xxx" parameterType="yyy" useGeneratedKeys="true">
   insert into table(...) values (...)
   <selectKey resultType="long" order="AFTER" keyProperty="id">
	SELECT LAST_INSERT_ID() AS id
   </selectKey>
</insert>
时间: 2024-10-14 01:01:31

mybatis 做 insert操作的时候返回插入的那条数据的id的相关文章

C# Winform中执行post操作并获取返回的XML类型的数据

/// <summary> /// 返回指定日期的订单数据 /// </summary> /// <param name="StartDate">起始日期</param> /// <param name="EndDate">结束日期</param> /// <returns>DataTable</returns> public System.Data.DataTable

orcle 如何快速插入百万千万条数据

有时候做实验测试数据用到大量数据时可以用以下方法插入: 方法一:使用xmltable create table bqh8 as select rownum as id from xmltable('1 to 10000000');select count(*) from bqh8; -----------------------一千万条数据已插入. 方法二:使用dual+connect by level create table bqh9 as select rownum as id from

java 批量插入10万条数据

for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } 运行时间==780450ms conn = getConn(); // JAVA默认为TRUE,我们自己处理需要设置为FALSE,并且修改为手动提交,才可以调用rollback()函数 conn.setAutoCommit(false); st = conn.createStatement(); long s

批量插入100万条数据

创建数据库: --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Table Create table BulkTestTable( Id int primary key, UserName nvarchar(32), Pwd varchar(16)) go --Create Table Valued CREATE TYPE BulkUdt AS TABLE (Id int, UserName

插入数据库一条数据,出现乱码问题。

插入数据库一条数据: 例如: //2.建立连接 参数 地址 用户 ,密码 Connection con= DriverManager.getConnection(url:"jdbc:mysql://localhost:3306/db2020", user:"root", password:"123456"); //3.准备sqlString sql="INSERT into cat VALUES(NULL,'狸猫',4)";

MyBatis进行insert操作时不能将数据插入到数据库

MyBatis进行数据库增删改查时,明明表里有数据却查不出结果,同样主键的数据可以多次插表成功但是其实并未真正插入到表里,经过几次尝试,发现问题在于MyBatis_config.xml文件的transactionManager属性配置不正确,将type从JDBC改到MANAGED则可正常操作.公司的电脑则需要将MANAGED改为JDBC才可以正常操作. 查看了下transactionManager属性的说明,MANAGED是不会自动提交和回滚的,原因还在进一步查明中,先记下来. <?xml ve

MyBatis Mapper insert操作返回自增Id

在insert标签中添加主键在实体类中的字段keyProperty="id" <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> 这样在insert操作后,会将操作完成的新记录注入回传进来的对象中 原文地址:https://www.cnblogs.com/esrevinud/p/12291646.ht

【记录】mybatis获取刚刚插入到数据库的数据的id

有时候我们需要mybatis获取insert 后的id,现有两种解决方案 方案一: <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> 方案二: <insert id="insert" parameterType="co

数据库 一次插入几万条数据

最近做了一个功能, 操作的数据量特别大, 一次 往数据库  插入上万条数据.我用了 循环添加, 和EF封装的添加功能. 两次方式速度都非常慢,一万条数据都要近一分钟的时间. 在网上 查找资料后, 可以创建一个Datatable对象,然后把数据都赋值给这个Datatable对象的列. 然后Copy到数据库就行了. 下面这段代码是:实例化一个Datatable,  然后确定所有的列.列名最好于表里的字段一样哦 然后循环你的 大数据,每次循环都创建一列,添加到Datatable. Datatable