当前位置: 首页 > 面试题库 >

MyBatis,如何获取插入的自动生成的密钥?[MySQL]

凌轶
2023-03-14
问题内容

如何使用MyBatis获取插入的生成密钥?我阅读了许多有关此问题的页面,但仍然被屏蔽,请问有人可以帮助我吗?这是我的代码:

桌子:

ID_ERROR long primary key
DATE timestamp
TYPE varchar
MESSAGE varchar
SOURCE varchar

道:

Long returnedId = 0L;
MyMapper myMapper = this.sqlSession.getMapper(MyMapper.class);
myMapper.insertRecord(returnedId, Utils.now(), t.getClass().getName(), t.getMessage(), c.getName());
return returnedId;

mapper.java:

public void insertRecord(@Param("returnedId") Long returnedId, @Param("timestamp")Timestamp timestamp,@Param("type") String type,@Param("message") String message,@Param("source") String source);

mapper.xml

 <insert id="insertRecord" parameterType="map" useGeneratedKeys="true"  keyProperty="ID_ERROR">
    INSERT INTO errors (
        DATE,
        TYPE,
        MESSAGE,
        SOURCE
    )
    VALUES (
        #{timestamp},
        #{type},
        #{message},
        #{source}
    )
    <selectKey resultType="long" order="AFTER" keyProperty="returnedId">
        SELECT LAST_INSERT_ID() as returnedId
    </selectKey>
</insert>

怎么了?如何获得此插入的生成的密钥?谢谢!


问题答案:

如果要获取生成的主键,则应通过Map或传递参数。POJO Object

public void insertRecord(Map<String, Object> map);

调用映射方法时,将值映射。

Map<String, Object> map = new HashMap<String, Object>();
map.put("returnedId", 0);
map.put("message", message);
// other paramters
mapper.insertRecord(map);
return map.get("returnedId");


 类似资料:
  • 问题内容: 我想从行插入中检索自动生成的ID,但得到一个 这是代码: 这是PostgreSQL表: PostgreSQL支持自动生成的密钥,但是我得到了这个异常: 编辑:我试图这样做以获得自动生成的密钥: 但我得到了: ,虽然我认为 应该在插入行时调用 编辑: 插入行时正确创建了自动增量值 任何想法 ? 问题答案: 请注意,在较新版本的Postgres中,您需要使用 代替

  • 问题内容: 我正在使用JDBC批处理插入插入许多记录。有什么方法可以获取每个记录的生成密钥吗?我可以配合批量插入使用吗? 我在用 我正在考虑与循环一起使用以获得所需的结果。还有其他解决方案吗? 问题答案: 似乎Oracle 12c不支持根据以下页面将自动生成的密钥与批处理更新结合使用: http://docs.oracle.com/cd/E16655_01/java.121/e17657/jdbc

  • 我正在使用Spring MVC Hibernate 在保存新记录时,会生成自动递增的新主键(db.MySQL)。我想获取并返回与上述方法相关的新的自动递增值。 更新我!

  • 我想从行插入中检索自动生成的id,但得到的是 PostgreSQL支持自动生成的密钥,但我得到了这个异常: 编辑:我尝试了此操作以获取自动生成的密钥: 但我得到一个: 插入行时会正确创建自动递增值 知道吗?

  • 问题内容: 我不明白如何使用commons-dbutils获取自动生成的密钥? 问题答案: 您可以使用。下面是一个例子。给定一个名为的表,该表具有一个自动生成的主键列和一个名为的列,您可以执行以下操作:

  • 本文向大家介绍如何获取自动生成的(主)键值?相关面试题,主要包含被问及如何获取自动生成的(主)键值?时的应答技巧和注意事项,需要的朋友参考一下 insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。 如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入 的参数对象中。 示例: