-
mybatis 3.0.5 --batch insert后如何获取返回的值20
相关JAVA类:
public static int insertPersons(List<Person> persons){ SqlSession session = MyFactory.sessionFactory().openSession(ExecutorType.BATCH, false); Map<String,List<Person>> tmp = new HashMap<String, List<Person>>(); tmp.put("persons", persons); session.insert("insertPersons", tmp); session.commit(); for (Person person : persons) { System.out.println(person.getId()); } return 0;
对应的XML:
<insert id="insertPersons" parameterType="com.wayne.domain.Person" keyProperty="id" keyColumn="GENERATED_KEY" useGeneratedKeys="true"> INSERT INTO Person (name,address,age) VALUES <foreach collection="persons" item="item" index="index" separator=","> (#{item.name},#{item.address},#{item.age}) </foreach> </insert> <!--keyColumn是3.0.5里新加的,用于获取那个自增的column的value-->
DB: MySQL
在执行后能确定record已insert到DB,但是无法获取返回的key value.
特意debug发现在session.commit();时会去获取key value.
主要是在 Jdbc3KeyGenerator.processAfter这个method里,代码如下
while (rs.next()) { Object value = th.getResult(rs, colName); metaParam.setValue(keyProperty, value); }
debug发现确实可以取得那些key value.
但是在metaParam.setValue里出了问题,所有的key value都会设置到map(就是参数tmp)里,但是key都是同一个 "id", 这个"id"被set了100次,但是没有set到list的person的id里.
请问如何让batch insert后的key value设置到person的id里.
person类是个简单的domain而已.
补充:
不希望用foreach来做batch insert,而是如同xml里那样直接一条SQL搞定.
毕竟foreach循环的话有点浪费吧.
如果foreach的话就不能用ExecutorType.BATCH了,否则key value不能正确的返回了.
问题补充:<div class="quote_title">xxq 写道</div><div class="quote_div">insert加入 <br /><selectKey resultClass="int" keyProperty="id">SELECT LAST_INSERT_ID() AS ID FROM tb LIMIT 1</selectKey></div> <br /> <br />谢谢xxq。 <br /> <br />这个已经试过了,不管用的。 <br /> <br />已经特意debug过,其实mybatis已经从driver里获取了return的key value, <br />但是并没有把key value正确的set入bean的id里。 <br /> <br />如果你那里能成功的话,请给一份比较详细的sample或者伪码也可,主要是关键的地方有即可 <br /> <br />2011年6月07日 20:17
相关推荐
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
文件解压后有mybatis(可直接导入eclipse运行的项目)和mybatis-3.0.5-bundle.zip(官方压缩包) 官方压缩包里的有个war包拷入tomcat的wepapp目录即可运行观看效果。 可参照官方文档去学习。有关mybatis3.0.5框架的中文...
mybatis-3.0.5-SNAPSHOT
mybatis-3.0.5-api.chm (java的) ,自己要用,不喜欢看html的就做了一个chm格式的,大家也可以看一下
IBATIS经过修改升级为mybatis-3.0.5(最新版),今天就为大家分享中文帮助文档,并且附上所有JAR包
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...
包含翻译后的API文档:mybatis-plus-boot-starter-3.5.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.baomidou:mybatis-plus-boot-starter:3.5.1; 标签:baomidou、starter、mybatis、boot、jar包、java、...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
MyBATIS-3.0.5最新的JavaDoc文档。
包含翻译后的API文档:mybatis-plus-extension-3.5.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.baomidou:mybatis-plus-extension:3.5.1; 标签:extension、baomidou、mybatis、jar包、java、...
mybatis-plus-3.0.5.jar
mybatis源码是mybatis-3.2.6的源码,用户使用mybatis时可以进行参考
mybatis配置的重要文件包括mybatis-3-config.dtd mybatis-3-mapper.dtd
开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-...
包含翻译后的API文档:mybatis-spring-2.0.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.mybatis:mybatis-spring:2.0.0; 标签:mybatis、spring、中文文档、jar包、java; 使用方法:解压翻译后的API文档...
mybatis3.0.3 and spring3.0.5jar
包含翻译后的API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.2; 标签:spring、...