iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >使用mybatis进行数据插入时如何返回自增的id
  • 301
分享到

使用mybatis进行数据插入时如何返回自增的id

mybatisjava数据库 2023-08-21 20:08:08 301人浏览 泡泡鱼
摘要

如何解决问题 具体问题解决办法注意点 具体问题 当我们存储数据时,有时候id是选择让数据库自增的 。但前端如果需要当前添加数据的id时,我们在代码上就无法返回了。 解决办法 在 mybatis 中,可以通过配置来确保数据库操

具体问题

当我们存储数据时,有时候id是选择让数据库自增的 。但前端如果需要当前添加数据的id时,我们在代码上就无法返回了。

解决办法

mybatis 中,可以通过配置来确保数据库操作成功。具体方式是在 Mapper.xml 文件中使用 useGeneratedKeys 和 keyProperty 属性来获取自增主键的值,以判断插入操作是否成功。

下面是实现方法:

在 Mapper.xml 中的插入操作中,添加 useGeneratedKeys 和 keyProperty 属性。

<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyProperty="id">    INSERT INTO user(username, passWord) VALUES(#{username}, #{password})insert>

在 Java 代码中,调用 UserMapper 接口的插入方法时,需要判断插入是否成功。插入成功后,User 对象的 id 属性将被自动赋值为插入记录的主键值。

User user = new User();user.setUsername("username");user.setPassword("password");int result = userMapper.insertUser(user);if (result > 0) {    System.out.println("插入成功,主键为:" + user.getId());} else {    System.out.println("插入失败");}

在插入操作成功后,user.getId() 返回的就是插入记录的主键值,否则返回的是 null 或 0。因此,通过判断 user.getId() 的值是否为 null 或 0 可以判断插入操作是否成功。

其中useGeneratedKeys 和 keyProperty 是 MyBatis 中用于处理自增主键的两个重要属性。

  • useGeneratedKeys 属性表示是否使用自动生成的主键。如果该属性为 true,则表示使用数据库自动生成的主键;如果该属性为 false,则表示不使用自动生成的主键。默认值为 false。
  • keyProperty 属性表示实体类的属性名,用于接收自动生成的主键值。在执行插入操作时,如果使用了自动生成的主键,那么数据库会为新插入的记录自动生成一个主键值,这个值会被保存到 keyProperty 属性指定的实体类属性中。

注意点

需要注意的是,不同的数据库可能需要不同的配置和语法,需要根据实际情况进行调整。

  • oracle数据库(跟Mysql一样)
  • SQL Server
    sql Server 数据库中,使用属性进行自动生成主键的配置方法稍有不同。需要在 insert 标签中添加 useGeneratedKeys 属性,将其设置为 false,同时在 selecTKEy 标签中指定自动生成主键的方式和接收主键值的实体类属性,如下所示:
<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="false">    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">        SELECT @@IDENTITY AS id    selectKey>    INSERT INTO user(username, password) VALUES(#{username}, #{password})insert>

在上面的配置中,useGeneratedKeys 属性被设置为 false,表示不使用自动生成主键的方式。而是在 selectKey 标签中使用 @@IDENTITY 函数获取自动生成的主键值,并将其设置到实体类的 id 属性中。需要注意的是,在 SQL Server 中,@@IDENTITY 函数用于获取最近插入的标识列的值,因此只能在插入后使用。

来源地址:https://blog.csdn.net/a12789sd/article/details/129968480

--结束END--

本文标题: 使用mybatis进行数据插入时如何返回自增的id

本文链接: https://www.lsjlt.com/news/377268.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作