-
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
相关推荐
1. **安装与环境配置**:文档会指导如何设置MyBatis的环境,包括添加依赖(如mybatis-3.0.5-bundle.zip中的JAR包)、配置数据源和事务管理器等。 2. **快速入门**:通过简单的示例,介绍如何创建第一个MyBatis项目...
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
mybatis-3.0.5-SNAPSHOT
mybatis-3.0.5-api.chm (java的) ,自己要用,不喜欢看html的就做了一个chm格式的,大家也可以看一下
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...
在本资源包中,我们关注的是 "mybatis-3.0.5-bundleapi和jar.zip",其中包含了 MyBatis 3.0.5 版本的 API 文档和相关 JAR 文件。这个资源对于学习和使用 MyBatis 来说非常宝贵,因为它提供了全面的 API 参考和用户...
标题中的"Mybatis3.0.5 and Spring3.0.5jar"暗示了这是一个关于集成Mybatis和Spring框架的讨论,特别关注的是Mybatis的3.0.5版本和Spring的3.0.5版本。这两个框架在Java开发中被广泛用于持久层操作和依赖注入。接...
包含翻译后的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中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
文件解压后有mybatis(可直接导入eclipse运行的项目)和mybatis-3.0.5-bundle.zip(官方压缩包) 官方压缩包里的有个war包拷入tomcat的wepapp目录即可运行观看效果。 可参照官方文档去学习。有关mybatis3.0.5框架的中文...
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-3.0.5_api"表明这是一个关于MyBatis 3.0.5版本的API文档,它是开发者理解并使用MyBatis框架的重要参考资料。通过这个API,开发者可以更深入地了解MyBatis的各种功能和方法,从而更高效地解决与数据库...