gpt4 book ai didi

java - 使用 MyBatis 从 DB2 获取生成的 key

转载 作者:行者123 更新时间:2023-12-01 15:48:09 25 4
gpt4 key购买 nike

我有一个带有自动生成列的表,但我无法使用 MyBatis 检索 ID。我已经通过测试证明 SQL 正在运行并且正在插入行,但我无法生成 ID。

XML 配置是:

<insert id="insertRequestTrackingRow" parameterType="map">
INSERT INTO XML_LOG_T (REQ_SRC_SYS_CDE, REQ_USR_ID, REQ_XML_DOC, ROW_CRT_DTM, ROW_UPDT_DTM)
VALUES (#{sourceSystemCode}, #{userID}, #{message}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
</insert>

XML_LOG_T 上有一列 REQ_ID,是自动生成的。我的映射器界面是:

public interface UdbDataMapper {
int insertRequestTrackingRow(
@Param("message") String message,
@Param("sourceSystemCode") String sourceSystemCode,
@Param("userID") String userID);
}

返回的始终是1,我认为这是插入的记录数。我确信我错过了一些明显的东西,但只见树木不见森林。

最佳答案

这是一个非常好的explanation如何做到这一点。

基本上,您必须在 INSERT 语句的 XML 配置中使用 useGeneeratedKeys="true"和 keyproperty="keyfield"属性。然后,返回的键字段值将插入到您的参数对象中,并可以从那里检索。类似于以下代码示例的内容应该可以工作:

SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("sqlConfig.xml"));
SqlSession sess = sqlMapper.openSession();
try {
Map<String,String> paramObj = new HashMap<String,String>();
paramObj.put("param1", "value");
int result = sess.insert("insertRequestTrackingRow", paramObj);
System.out.println("REQ_ID: " + paramObj.get("REQ_ID"));
}
finally {
sess.close();
}

关于java - 使用 MyBatis 从 DB2 获取生成的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710132/

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