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

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

韦安顺
2023-03-14
问题内容

我是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字段会自动增加,并且记录会正确插入。


问题答案:

id被注入到对象中:

int num_of_record_inserted = fileAttachmentMapper.insertSelective(fileAttachment);

int id = fileAttachment.getId();

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



 类似资料:
  • 问题内容: 我使用以下查询将多个记录插入到表中: 由于查询要插入多个记录,因此无法使用 SCOPE_IDENTITY 来检索PK。有什么方法可以获取最近插入记录的ID? 问题答案: SCOPE_IDENTITY()将正确为您提供LAST ID。您需要将其与@@ Rowcount结合使用,以提供ID范围。 正如其他Richard指出的那样 ,这仅在您将增量设置为1时有效 例如: 执行此操作的另一种方

  • 问题内容: 我有一个插入查询(活动记录样式),用于将表单字段插入到MySQL表中。我想获取插入操作的最后一个自动递增的ID作为查询的返回值,但是我有一些问题。 控制器内部: 而内部模型: 作为模型中add_post的返回,我一无所获 问题答案: 尝试这个 如果有多次插入,您可以使用

  • 本文向大家介绍MyBatis获取插入记录的自增长字段值(ID),包括了MyBatis获取插入记录的自增长字段值(ID)的使用技巧和注意事项,需要的朋友参考一下 第一步:     在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名! 第二步:     Mybatis执行完插入语句后,自动将自增

  • 我有个问题。我似乎无法从MySQL数据库/表中获取最后插入的记录/id。我想从“tag_id”列返回最后一个插入的id,但我没有得到任何返回。顺便说一下,我正在使用DBO。我尝试了“mysql\u insert\u id”和“lastInsertId”,但没有成功。 我的数据库表看起来像这样: 表名:gitags_标签 我的PHP如下所示(在本例中,我希望返回'440'): 非常感谢您的帮助。

  • 问题内容: 我正在向表中插入一些数据,并且需要检索插入行的。表示是通过序列生成的,然后通过触发器插入到表中。 现在,我知道在使用时有几种方法来获取插入行的ID ,但是由于我正在执行命令,因此似乎无法弄清楚在插入数据后如何获取ID。任何建议将不胜感激。 问题答案: 这样的事情应该工作

  • 问题内容: 我有一个查询,我想插入最后一个ID。字段ID是主键,并且是自动递增的。 我知道我必须使用以下语句: 该语句适用于如下查询: 但是,如果我想使用以下语句获取ID: 我收到此错误: 我究竟做错了什么? 问题答案: 那是因为那是SQL函数,而不是PHP。您可以使用。 喜欢: 如果要使用SQL而不是PDO API进行操作,则可以像普通的select查询一样进行操作: