一尘不染

获取mybatis中最后插入的记录的ID

mysql

我是mybatis的新手。我正在尝试获取最后插入的记录的ID。我的数据库是mysql而我的映射器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);

在我的课堂上,我正在使用

int id = fileAttachmentMapper.insertSelective(fileAttachment);

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


阅读 231

收藏
2020-05-17

共1个答案

一尘不染

id被注入到对象中:

int num_of_record_inserted = fileAttachmentMapper.insertSelective(fileAttachment);

int id = fileAttachment.getId();

要做的selectKey是在要插入的对象中设置id,在这种情况下,fileAttachment在其属性中设置ID,并插入idAFTER记录。

2020-05-17