Mybatis 在 insert 插入操作后返回主键 id的操作方法

使用Mybatis在insert插入操作完成后,获得插入数据的主键ID是非常常见的需求。在Mybatis中,我们可以通过两种方式来实现这个需求:

1.使用selectKey标签

在Mybatis中,我们可以在insert语句中使用selectKey标签来获取自增主键的值。selectKey标签可用于定义获取新生成的主键的类型和值源,通常是数据库自动生成的主键值。

首先,我们需要在mapper.xml文件中定一个sql映射:

<insert id="insertUser" parameterType="com.example.User">
    <selectKey keyColumn="id" keyProperty="id" resultType="int" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
    INSERT INTO user (username, password, sex, age) VALUES(#{username}, #{password}, #{sex}, #{age})
</insert>

这里我们在insert语句中使用selectKey标签,并定义了获取自增主键值的方式:SELECT LAST_INSERT_ID()。LAST_INSERT_ID是MySQL中用于返回最后一个插入行的自增ID值的函数。通过selectKey标签,在insert语句执行完成后,Mybatis会自动执行SELECT LAST_INSERT_ID()语句,并返回对应的值,然后将该值设置到传入的User对象的id属性中。

使用该insert语句的Java代码如下:

User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setSex("male");
user.setAge(18);

userMapper.insertUser(user); //插入用户信息

System.out.println(user.getId()); //打印自增主键

2.使用useGeneratedKeys属性

除了selectKey标签以外,Mybatis还支持通过useGeneratedKeys属性获取主键ID信息。useGeneratedKeys属性用于定义是否使用生成的主键值(例如自动增长的主键),默认情况下这个值是false,即不使用。如果设置为true,那么在插入完成后,Mybatis会自动将主键值设置到对应的属性中。

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

上面这段代码中,我们使用useGeneratedKeys="true"来定义开启自动生成主键功能。同时,我们还定义了keyColumn和keyProperty两个属性,表示将自动生成主键的列名设置为id,将自动生成主键的值设置到User对象的id属性中。

使用该insert语句的Java代码如下:

User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setSex("male");
user.setAge(18);

userMapper.insertUser(user); //插入用户信息

System.out.println(user.getId()); //打印自增主键

当然,要使用这种方式,我们还需要在数据库中将id字段设置为自动生成主键,例如MySQL中可以使用AUTO_INCREMENT关键字来实现自动增长。

总结:

以上就是使用Mybatis在insert插入操作后返回主键ID的两种方式,使用起来非常简单。如果你碰到了需要获取主键ID的场景,可以尝试使用这两种方式来实现需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis 在 insert 插入操作后返回主键 id的操作方法 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • cad文件中怎么画表格?cad表格的使用方法

    手机误删除照片如何恢复?使用Recuva恢复手机内误删除照片教程 当您误删除手机内的照片时,您可以使用Recuva等数据恢复软件来恢复这些照片。以下是关于如何使用Recuva恢复手机内误删除照片的攻略,包括以下几个步骤: 步骤1:下载并安装Recuva 在使用Recuva恢复手机内误删除照片之前,您需要下载并安装Recuva。以下是下载并安装Recuva的步…

    html 2023年5月17日
    00
  • Java Web项目中解决中文乱码方法总结(三种最新方法)

    下面我将详细讲解“Java Web项目中解决中文乱码方法总结(三种最新方法)”的攻略: Java Web项目中解决中文乱码方法总结(三种最新方法) 在 Java Web 开发中,我们经常会遇到中文乱码问题。为此,我们需要在项目中解决这个问题,下面介绍三种最新方法。 方法一:手动设置字符集 在 Java Web 中,如果不对字符集进行设置,就会出现中文乱码的情…

    html 2023年5月31日
    00
  • 简介XML文档的阅读与编辑

    下面是“简介XML文档的阅读与编辑”的完整攻略。 一、了解XML 1.1 什么是XML? XML全称为eXtensible Markup Language,即可扩展标记语言。XML是一种用于存储和传输数据的标准格式。它使用标记来描述数据,使得数据的含义和结构变得清晰易懂,同时也便于软件之间的交互和数据的共享与发布。 1.2 XML的基本语法 与HTML相似,…

    html 2023年5月30日
    00
  • IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤

    下面是详细讲解“IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤”的完整攻略: 问题描述 当使用IntelliJ IDEA 2021作为开发工具,并且Tomcat 8作为服务器时,在启动Tomcat时可能会遇到乱码问题,导致服务器无法正常启动。这个问题可能会让一些开发者困惑。 问题分析 问题的原因是由于Tomcat 8默认使用的是…

    html 2023年5月31日
    00
  • 简介C#读取XML的两种方式

    针对“简介C#读取XML的两种方式”这个话题,我可以提供以下完整攻略: 简介C#读取XML的两种方式 XML是一种结构化的数据格式,可以通过c#程序进行读取和解析。下面将介绍两种使用C#读取XML的方式:使用XmlDocument和使用XDocument。 使用XmlDocument方式读取XML XmlDocument是C#中处理XML文档的一种常用方式,…

    html 2023年5月30日
    00
  • 基于Freemarker和xml实现Java导出word

    基于Freemarker和XML实现Java导出Word,可以按照以下步骤来进行: 步骤一:添加相关依赖 在项目的pom.xml(Maven项目)文件中添加以下dependency: <dependency> <groupId>org.apache.poi</groupId> <artifactId>ooxml…

    html 2023年5月31日
    00
  • excel表格输入手机号显示乱码该怎么办?

    如果在 Excel 表格中,输入手机号码时出现乱码,可以尝试以下方法进行解决: 设置单元格格式为“文本” 在 Excel 表格中,输入手机号码时,默认会将其格式化为数字或科学计数法,从而导致输入时出现乱码。因此,我们可以将单元格格式设置为“文本”,以避免出现该问题。 步骤如下:1)选中你需要输入手机号码的单元格。2)将单元格格式设置为“文本”。 a) 在 E…

    html 2023年5月31日
    00
  • 塞尔达传说王国之泪全左纳乌装置用途 左纳乌装置图鉴

    以下是“塞尔达传说王国之泪全左纳乌装置用途 左纳乌装置图鉴”的完整攻略: 塞尔达传说王国之泪全左纳乌装置用途 左纳乌装置图鉴 在塞尔达传说王国之泪中,左纳乌装置是一种非常重要的道具,它可以帮助玩家解决许多难题。以下是关于左纳乌装置的详细攻略。 左纳乌装置用途 左纳乌装置是一种可以控制时间的道具,它可以让玩家在游戏中解决许多难题。以下是左纳乌装置的主要用途: …

    html 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部