xml  配置       <insert id="info" parameterType="info">
<selectKey resultType="int" keyProperty="id" order="AFTER" >
    SELECT @@IDENTITY AS id
  </selectKey>
insert into   info(a,b)values(#{a},#{b});
</insert>
现在的情况是 数据能插入
insertid不晓得怎么取出,MyBatis默认的返回值是1,也就是插入的行数debug信息
2012-01-13 11:17:33,857 DEBUG [java.sql.PreparedStatement] - ==>  Executing: SELECT @@IDENTITY AS id 
2012-01-13 11:17:33,857 DEBUG [java.sql.PreparedStatement] - ==> Parameters: 
2012-01-13 11:17:33,885 DEBUG [java.sql.ResultSet] - <==    Columns: id
2012-01-13 11:17:33,885 DEBUG [java.sql.ResultSet] - <==        Row: 40ID已经正确取出,请问各位大佬们,java怎么获取到这个值?

解决方案 »

  1.   

    <insert id="insertRe"parameterClass="ReInfo">
        insert into SGS_REMARK(REMARK)values(#re#)
        <selectKeyresultClass="int" keyProperty="id" >
            SELECT @@IDENTITY AS id
        </selectKey>
    </insert>id是ReInfo中的属性,楼主试试这种写法
      

  2.   

    可以的,这是我这的输出before insert >>>>>>People [age=20, firstName=zyz1111, id=null, lastName=1111zyz]
    DEBUG 2012-01-13 16:03:22,243 org.apache.ibatis.logging.slf4j.Slf4jImpl: ==>  Executing: INSERT INTO people(age,firstname,lastname)values(?,?,?); 
    DEBUG 2012-01-13 16:03:22,243 org.apache.ibatis.logging.slf4j.Slf4jImpl: ==> Parameters: 20(Integer), zyz1111(String), 1111zyz(String)
    DEBUG 2012-01-13 16:03:22,243 org.apache.ibatis.logging.slf4j.Slf4jImpl: ==>  Executing: SELECT @@IDENTITY AS id 
    DEBUG 2012-01-13 16:03:22,243 org.apache.ibatis.logging.slf4j.Slf4jImpl: ==> Parameters: 
    DEBUG 2012-01-13 16:03:22,274 org.apache.ibatis.logging.slf4j.Slf4jImpl: <==    Columns: id
    DEBUG 2012-01-13 16:03:22,274 org.apache.ibatis.logging.slf4j.Slf4jImpl: <==        Row: 11
    after insert >>>>>>People [age=20, firstName=zyz1111, id=11, lastName=1111zyz]
    package com.test.www.mybatis;import org.apache.log4j.Logger;public class People {
    private static Logger logger = Logger.getLogger(People.class.getName());
    private Integer id;
    private Integer age;
    private String firstName;
    private String lastName; public static Logger getLogger() {
    return logger;
    } public static void setLogger(Logger logger) {
    People.logger = logger;
    } public Integer getId() {
    return id;
    } public void setId(Integer id) {
    this.id = id;
    } public Integer getAge() {
    return age;
    } public void setAge(Integer age) {
    this.age = age;
    } public String getFirstName() {
    return firstName;
    } public void setFirstName(String firstName) {
    this.firstName = firstName;
    } public String getLastName() {
    return lastName;
    } public void setLastName(String lastName) {
    this.lastName = lastName;
    } @Override
    public String toString() {
    return "People [age=" + age + ", firstName=" + firstName + ", id=" + id
    + ", lastName=" + lastName + "]";
    }
    }
    <mapper namespace="com.test.www.mybatis.People">
    <insert id="insert" parameterType="People">
    <selectKey keyProperty="id" order="AFTER" resultType="int">SELECT @@IDENTITY AS id</selectKey>
         INSERT INTO   people(age,firstname,lastname)values(#{age},#{firstName},#{lastName});        
    </insert>
    </mapper>
      

  3.   

    我是这么用的<insert id="addHomework" parameterType="Map" useGeneratedKeys="true" keyProperty="homeworkid">
    INSERT INTO 
    homework(homeworkbag_id,homeworkname,file_path,crt_iduser,crt_time,homeworkbagname) 
    VALUES(#{homeworkbag_id},#{homeworkname},' ',#{crt_iduser},now(),#{homeworkbagname})
    <selectKey resultType="int" order="AFTER" keyProperty="homeworkid">
    SELECT LAST_INSERT_ID();
    </selectKey>
    </insert>我在Action中,调用包含这个sql的service,this.service.addHomework(paraMap)然后新插入的homeworkid会返回在paraMap中
    这样获得paraMap.get("homeworkid")