MyBatis 3的自增ID的Bug(续)

简介: MyBatis 3的自增ID的Bug(续)   作者:chszs 转载请注明出处! 自上次我提出MyBatis 3的Bug之后,见:http://blog.

MyBatis 3的自增ID的Bug(续)

 

作者:chszs

转载请注明出处!


自上次我提出MyBatis 3的Bug之后,见:http://blog.csdn.net/chszs/archive/2011/03/31/6292719.aspx

我把Bug提交到MyBatis的官方网站,见http://code.google.com/p/mybatis/issues/detail?id=287

问题描述如下:

Eclipse Java Project:
1. SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>olor:#ff9900;text-decoration:none;" href="http://mybatis.org/dtd/mybatis-3-config.dtd" rel="nofollow">http://mybatis.org/dtd/mybatis-3-config.dtd">
  

2. mysql.sql
USE test;
CREATE TABLE `worker` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `pin` VARCHAR(64) DEFAULT NULL,
  `firstname` VARCHAR(64) DEFAULT NULL,
  `lastname` VARCHAR(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

3. WorkerMapper
package com.dao;

import com.entity.Worker;
public interface WorkerMapper {
	int insertWorker(Worker worker);
}

4. Worker.java
package com.entity;

public class Worker {
    private Integer id;

    private String pin;

    private String firstname;

    private String lastname;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getPin() {
        return pin;
    }

    public void setPin(String pin) {
        this.pin = pin == null ? null : pin.trim();
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname == null ? null : firstname.trim();
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname == null ? null : lastname.trim();
    }
}

5. WorkerMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>olor:#ff9900;text-decoration:none;" href="http://mybatis.org/dtd/mybatis-3-mapper.dtd" rel="nofollow">http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 
			select LAST_INSERT_ID()
		
    insert into worker
    
        pin,
      
        firstname,
      
        lastname,
      
        #{pin,jdbcType=VARCHAR},
      
        #{firstname,jdbcType=VARCHAR},
      
        #{lastname,jdbcType=VARCHAR},
      

6. Test.java
/**
 * @Author: Li.Qiang
 * @Date:   2011-3-9
 */
package com.test;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.entity.Worker;

public class Test {
	public static void main(String[] args) throws Exception{
		String resource = "conf/SqlMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
		SqlSession session = factory.openSession();
		
		Worker worker = new Worker();
		worker.setPin("123456");
		worker.setFirstname("Tom");
		worker.setLastname("Jack");

		try{
			for(int i=0; i
得到MyBatis作者的反馈,语句本身有int型的返回值,表示插入的条数。故在语句内想使用 返回自增ID自动生成的ID值是不可能的。
可以单独用语句来完成返回自增ID自动生成的ID值。
目录
相关文章
|
4月前
|
SQL XML Java
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
56 0
|
4月前
|
Java 关系型数据库 MySQL
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗?
60 0
|
5月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
36 0
|
9月前
|
算法 数据库
MyBatisPlus之id生成策略
MyBatisPlus之id生成策略
299 0
|
9月前
|
SQL Java 数据库连接
MyBatis动态设置表名 获取添加功能自增的主键 自定义映射
MyBatis动态设置表名 获取添加功能自增的主键 自定义映射
136 0
|
10月前
|
XML Java 数据库连接
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
397 0
|
12月前
|
SQL Java 数据库连接
MyBatis各种SQL操作及执行添加功能获取自增的主键
MyBatis各种SQL操作及执行添加功能获取自增的主键
115 0
|
12月前
|
SQL Java 数据库连接
【Mybatis】Mybatis中特殊SQL的执行,模糊查询,批量删除,动态设置表名,添加功能获取自增的主键
【Mybatis】Mybatis中特殊SQL的执行,模糊查询,批量删除,动态设置表名,添加功能获取自增的主键
|
Java 数据库连接 数据库
Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...
Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...
127 0
|
Java 数据库连接 数据库
九、MyBatis添加功能获取自增主键
MyBatis添加功能获取自增主键
112 0
九、MyBatis添加功能获取自增主键