gpt4 book ai didi

spring-mvc - 获取mybatis中插入记录的自动生成的key

转载 作者:行者123 更新时间:2023-12-03 18:11:24 24 4
gpt4 key购买 nike

我在一个使用 spring mvc + mybatis + mysql 的 web 应用程序下工作。

我发现我无法获得最后插入的记录的自动生成的 key (我用谷歌搜索了很多)。

这是相关的配置(以模型“Post”为例):

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 配置文件
<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>

道:

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";
}
}

但是,当我向数据库插入新帖子时:

postDao.add(post);

我无法获取为插入的帖子生成的 ID。我总是得到 1。我知道这是受行影响的数字。

另外,我阅读了 mybatis 指南,并尝试了以下操作:

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

但似乎,这行不通。

如何解决?

最佳答案

事实上,以下工作:

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

postDao.add(post);

会像以前一样返回 1,但 post.getId()会拿到 key 。

关于spring-mvc - 获取mybatis中插入记录的自动生成的key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12241260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com