2017.9.15 mybatis批量插入后实现主键回填

参考来自:mybatis mysql 批量insert 返回主键

注意:必须要在mybatis3.3.1及其以上才能实现。

1.service

1 List branchEntryList = (ArrayList<Entry>)entryMap.get("branchEntryList");
2 branchDao.insertBatch(branchEntryList);

2.dao

3.xml

注意这里是list,不管参数名叫什么,这里都是list。

4.效果

执行前,branchEntryList里的对象是没有id的值的。

执行完后,查看变量branchEntryList,可以看到主键已经回填了。

5.其他

在查资料的时候,说这种方式支持map和list。

于是使用Map:

(1)insertMap.insert("branchEntryList",branchEntryList);

(2)int insertBatch(Map<String,Object> insertMap);

(3)parameterType="java.util.Map"

(4)<foreach collection="branchEntryList" ...

但是主键并没有回填。将Map的类型改为<String,List<Entry>>,主键则成功回填。所以使用此项功能的时候,List<Entry>必须指明,不管是不是放在map里。

时间: 2024-10-10 09:38:58

2017.9.15 mybatis批量插入后实现主键回填的相关文章

MyBatis返回插入记录的主键

如果想插入一条记录之后,立刻对其进行其他操作,这时候就需要获取记录的主键(通常是ID),MyBatis有以下方式处理. Dao层的接口定义如下: void importUser(@Param( "user" ) User user); 注意:这里不能因为要返回主键而定义接口的返回值类型为String或者int,会报错. xml配置文件: <insert id= "importUser" useGeneratedKeys = "true" k

2017.9.15 postgresql批量插入造成冲突后执行更新

参考来自:https://stackoverflow.com/questions/40647600/postgresql-multi-value-upserts/46233907#46233907 1.before insert 2.insert sql 3.after insert

Mybatis获取插入自增主键

只需在插入语句上配置: useGeneratedKeys="true" keyProperty ="id" <insert id="insertSelectiveMemberAcc" useGeneratedKeys="true" keyProperty="id" parameterType="com.member.domain.MemberAccInfo">     ins

mybatis获取插入的语句主键(自增主键)

<insert id="insertUser" parameterType="User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> insert into users(name, age, g

Mybatis配置插入数据返回主键ID

需要在insert方法中添加 <insert id="insertSelective" parameterType="com.midou.ott.model.MDActivity" useGeneratedKeys="true" keyProperty="id"> 加上上面红色部分,keyProperty中的id,是MDActivity对象的中的Id 使用时直接从MDActivity对象中获取到ID

xorm插入数据库后返回主键自增id

golang使用xorm连接数据库后,插入结构体,无法返回自增主键id,饭后的主键id都是0.经过研究发现,如果给结构体id设置xorm tag,则会默认id为0,不会返回插入成功后的主键id. xorm文档中如下描述 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 _ "github.com/go-sql-driver/mysql" 8 "github.com/go-xorm/xorm

MyBatis批量插入数据(MySql)

由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应该要比循环插入的效果更好,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来.供以后查阅和学习. java代码: 注意:这里循环的时候需new 出来新的对象,而不能通过循环改变属性的值就认为这是一个新的对象了,通俗的说就是new ReddemCode()要放在for循环的里面.

解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置. (3)collection:根据传入的参数值确定. (4)open:表示该语句以什么开始. (5)separator:表示在每次进行迭代之间以什么符号作为分隔 符. (6)close:表示以什么结束. 首先,错误的xml配置文件如下: <insert id="save" da

MyBatis批量插入数据

在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179