java - 获取mybatis最后插入记录的id

标签 java mysql ibatis mybatis

我是mybatis新手。我正在尝试获取最后插入记录的 ID。我的数据库是 mysql,我的 mapper xml 是

  <insert id="insertSelective"  parameterType="com.mycom.myproject.db.mybatis.model.FileAttachment" >
  <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
  SELECT LAST_INSERT_ID() as id
</selectKey>
 insert into fileAttachment
<trim prefix="(" suffix=")" suffixOverrides="," >
  <if test="name != null" >
    name,
  </if>
  <if test="attachmentFileSize != null" >
    size,
  </if>      
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
  <if test="name != null" >
    #{name,jdbcType=VARCHAR},
  </if>
 <if test="attachmentFileSize != null" >
    #{attachmentFileSize,jdbcType=INTEGER},
  </if>
 </trim>
 </insert>

我认为这里写的语句 'SELECT LAST_INSERT_ID() as id' 应该返回最后插入记录的 id 但我在插入记录后总是得到 1。

我的 mapper.java 类我有方法

   int insertSelective(FileAttachment record);

在我的dao类中我正在使用

int id = fileAttachmentMapper.insertSelective(fileAttachment);

插入新记录时,我得到的 Id 值始终为 1。我的 ID 字段自动递增并且记录正确插入。

最佳答案

对象中注入(inject)id:

int num_of_record_inserted = fileAttachmentMapper.insertSelective(fileAttachment);

int id = fileAttachment.getId();

selectKey 所做的是在您要插入的对象中设置 id,在本例中是在 fileAttachment 的属性 id 和 AFTER 中插入记录。

关于java - 获取mybatis最后插入记录的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12103606/

相关文章:

mysql - 如何使 Fanbatis @Column 注释将 Fantom 类属性正确映射到数据库列?

java - 在 iBatis 中,如何将 'JOIN' 与 null 属性一起使用?

java - 如何在maven项目中为sqlmapconfig.xml设置类路径

java - 为什么 addToBackStack 没有填充 BackStack?

java - VBA 中的备忘录实现

java - M2eclipse依赖解析

java - 使用图形的桨碰撞侧检测

php - 知道哪一列有结果

mysql - 对于小型 Web 项目,MySQL 或 Oracle 哪个更快?

java - 从属性文件保护数据库凭据的正确方法