0 0

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 />&lt;selectKey resultClass="int" keyProperty="id"&gt;SELECT LAST_INSERT_ID() AS ID FROM tb LIMIT 1&lt;/selectKey&gt;</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个答案 按时间排序 按投票排序

0 0

insert加入
<selectKey resultClass="int" keyProperty="id">SELECT LAST_INSERT_ID() AS ID FROM tb LIMIT 1</selectKey>

2011年6月10日 17:26

相关推荐

    mybatis-3.0.5-bundle及其中文文档

    1. **安装与环境配置**:文档会指导如何设置MyBatis的环境,包括添加依赖(如mybatis-3.0.5-bundle.zip中的JAR包)、配置数据源和事务管理器等。 2. **快速入门**:通过简单的示例,介绍如何创建第一个MyBatis项目...

    mybatis-3.0.5-javadoc.chm

    自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。

    mybatis-3.0.5-SNAPSHOT

    mybatis-3.0.5-SNAPSHOT

    mybatis-3.0.5-api.chm

    mybatis-3.0.5-api.chm (java的) ,自己要用,不喜欢看html的就做了一个chm格式的,大家也可以看一下

    MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)

    本工程为 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-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    mybatis-generator-config-1-0.dtd

    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-bundleapi和jar.zip",其中包含了 MyBatis 3.0.5 版本的 API 文档和相关 JAR 文件。这个资源对于学习和使用 MyBatis 来说非常宝贵,因为它提供了全面的 API 参考和用户...

    mybatis3.0.5 and spring3.0.5jar

    标题中的"Mybatis3.0.5 and Spring3.0.5jar"暗示了这是一个关于集成Mybatis和Spring框架的讨论,特别关注的是Mybatis的3.0.5版本和Spring的3.0.5版本。这两个框架在Java开发中被广泛用于持久层操作和依赖注入。接...

    mybatis-plus-boot-starter-3.5.1-API文档-中文版.zip

    包含翻译后的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-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    mybatis3.0.5官方示范项目下载

    文件解压后有mybatis(可直接导入eclipse运行的项目)和mybatis-3.0.5-bundle.zip(官方压缩包) 官方压缩包里的有个war包拷入tomcat的wepapp目录即可运行观看效果。 可参照官方文档去学习。有关mybatis3.0.5框架的中文...

    MyBATIS-3.0.5-JavaDoc.chm

    MyBATIS-3.0.5最新的JavaDoc文档。

    mybatis-plus-extension-3.5.1-API文档-中英对照版.zip

    包含翻译后的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 3.0.5版本的API文档,它是开发者理解并使用MyBatis框架的重要参考资料。通过这个API,开发者可以更深入地了解MyBatis的各种功能和方法,从而更高效地解决与数据库...

Global site tag (gtag.js) - Google Analytics