解决方案 »

  1.   

    a.xml:
    <insert id="insertAGenerated" parameterType="com.defonds.mybatis.test.bean.A" useGeneratedKeys="true" keyProperty="aId">
    insert into a(aName)
    values(#{aName})
    </insert>AMapper:
    package com.defonds.mybatis.test.dao;import com.defonds.mybatis.test.bean.A;public interface AMapper {
    void insertA(A a);

    int insertAGenerated(A a);
    }
    A:
    package com.defonds.mybatis.test.bean;public class A {
    private int aId;
    private String aName;

    public int getaId() {
    return aId;
    }
    public void setaId(int aId) {
    this.aId = aId;
    }
    public String getaName() {
    return aName;
    }
    public void setaName(String aName) {
    this.aName = aName;
    }

    }获取主键:
    A a;
    int aa = aMapper.insertAGenerated(a);
    注意:insert 不再返回主键,只返回响应行数,这点和 ibatis 不同了。
    所以上面的 aa 仅仅是执行结果。主键应该是:
    a.getaId();//主键这样获取
      

  2.   

    1.aMapper 是哪个类?
    2.我用的是SqlSession的insert()进行插入的
    3.我数据库有2个主键 ,用keyProperty="aId" aID是变量名字,程序怎么知道哪个是主键呢?是不是要在哪里指明啊,我用了你的方法结果查出来的是rowid。再和我讲讲吧,谢谢!
      

  3.   

    <insert id="insertAGenerated" parameterType="com.defonds.mybatis.test.bean.A" useGeneratedKeys="true" keyProperty="aId" keyColumn="aID">
    insert into a(aName)
    values(#{aName})
    </insert>
    增加keyColumn:数据库你要取的字段名
    keyProperty:实体类的变量名
    调用SqlSession的insert("insertAGenerated",实体类名)进行插入 ,然后通过实体类.get变量名就可以拿到了。
    关键是keyProperty="aId" keyColumn="aID"这2个属性的配置。