obtenir l'auto-genearated clé pour l'enregistrement inséré dans mybatis

Je suis travaille dans une application web qui utilisent spring mvc + mybatis + mysql.

Et j'ai constaté que je ne peux pas obtenir l'auto-clé générée pour le dernier enregistrement inséré (j'ai googlé tellement).

C'est la configuration associées(prendre le modèle "Post" par exemple):

spring.xml:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    //omitted
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="config.xml" />
</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

mybatis config.xml

<configuration>
    <typeAliases>
        <typeAlias alias="Post" type="com.king.model.Post" />
    </typeAliases>
    <mappers>
        <mapper resource="com/king/model/PostMapper.xml" />
    </mappers>
</configuration>

PostMapper.xml:

<mapper namespace="com.king.model.PostMapper">
    <insert id="insert" parameterType="Post">
        insert into posts (title,body,created_at,updated_at) values (#{title},#{body},#{createDate},#{updateDate})
    </insert>
</mapper>

Dao:

public abstract class AbstractSimpleDaoImpl<T> extends SqlSessionDaoSupport{
    @Override
    public int add(T entity) {
        return getSqlSession().insert(getMapperNamespace() + ".insert", entity);
    }

    protected abstract String getMapperNamespace();
}

public class PostDao extends AbstractSimpleDaoImpl<Post> {
    @Override
    protected String getMapperNamespace() {
        return "com.king.model.PostMapper";
    }
}

Cependant,lorsque j'insère un nouveau Post à la base de données:

postDao.add(post);

Je ne peux pas obtenir l'identifiant généré pour le post inséré. J'ai toujours de 1. Je sais que c'est la ligne concernés nombre.

Aussi,j'ai lu le mybatis guide,et j'ai essayé ceci:

<insert id="insert" parameterType="Post" useGeneratedKeys="true" keyProperty="id">

Mais il semble que cela ne fonctionne pas.

Comment résoudre ce problème?

OriginalL'auteur hguser | 2012-09-03