mybatis怎么返回自增主键

在MyBatis中,可以通过设置表主键为自动递增,每次插入后,MyBatis会将自动生成的主键赋值给指定的实体类字段。具体实现方法如下:,,1. 修改代码,2. 设置表主键为自动递增,3. 测试,,在分布式系统中,则需要生成全局唯一主键ID。方案1又根据数据库是否支持自动生成主键分为2中情况:若数据库支持自动生成主键的字段(MySQL和 SQL Server),则可以设置useGeneratedKeys=”true”,然后再把keyProperty 设置到目标属性上 。

MyBatis 是一种优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)为数据库中的记录。

在 MyBatis 中,我们可以通过以下几种方式来返回自增主键:

mybatis怎么返回自增主键

1、使用 MyBatis 的内置功能

2、使用 JDBC 的 Statement.RETURN_GENERATED_KEYS 属性

3、使用 MyBatis 的 useGeneratedKeys 属性

4、使用 MyBatis 的 keyProperty 属性

下面我们详细介绍这四种方法:

方法一:使用 MyBatis 的内置功能

mybatis怎么返回自增主键

在 MyBatis 中,我们可以在插入数据时直接获取自动生成的主键值,具体操作如下:

1、在你的实体类中,为主键字段添加一个 @TableId 注解,并设置 typeIdType.AUTO,

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    // 其他字段
}

2、在你的 Mapper.xml 文件中,编写插入数据的 SQL 语句,并在最后添加 USE IDENTITY(),

<mapper namespace="com.example.mapper.UserMapper">
    <insert id="insertUser" parameterType="com.example.entity.User">
        INSERT INTO user (username, password) VALUES ({username}, {password})
        USE IDENTITY()
    </insert>
</mapper>

这样,在插入数据后,MyBatis 会自动将自增主键值赋给实体类的主键字段。

方法二:使用 JDBC 的 Statement.RETURN_GENERATED_KEYS 属性

当我们需要返回多个自增主键值时,可以使用 JDBC 的 Statement.RETURN_GENERATED_KEYS 属性,具体操作如下:

mybatis怎么返回自增主键

1、在你的 JDBC 连接字符串中,添加 useGeneratedKeys=true&keyProperty=id,

jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&useGeneratedKeys=true&keyProperty=id

2、在你的实体类中,为主键字段添加一个 @TableId 注解,并设置 typeIdType.IDENTITY,

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
    @TableId(type = IdType.IDENTITY)
    private Long id;
    // 其他字段
}

3、在你的 Service 或者 Controller 中,执行插入数据的 SQL 语句,

@Autowired
private UserMapper userMapper;
public void insertUser(User user) throws SQLException {
    userMapper.insertUser(user);
}

当插入数据成功后,JDBC Connection 将返回一个包含所有生成的主键值的结果集,你可以从结果集中获取这些值,并将其赋给实体类的主键字段,需要注意的是,这种方法只适用于返回一个自增主键值的情况,如果需要返回多个自增主键值,可以使用其他方法。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/249474.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-23 09:35
Next 2024-01-23 09:36

相关推荐

  • springboot读取jar外部配置文件,spring mybatis配置文件(springboot读取jar包外的配置文件)

    Spring Boot可读取jar外部配置文件,包括Spring MyBatis的配置文件。

    2024-02-15
    0164
  • mybatis 懒加载

    MyBatis懒加载是一种在数据库查询中非常实用的技术,它的主要作用是减少不必要的数据库连接和数据传输,从而提高应用程序的性能,本文将详细介绍MyBatis懒加载的原理、实现方式以及在实际开发中的应用。我们来了解一下什么是懒加载,懒加载(Lazy Loading)是一种设计模式,它的核心思想是在需要的时候才创建对象,而不是在一开始就创……

    2023-12-09
    0119
  • spring hibernate怎么整合

    Spring Hibernate整合在Java Web开发中,Spring和Hibernate是两个非常流行的框架,它们各自具有强大的功能,但同时也存在一些限制,整合这两个框架可以充分发挥它们的优势,提高开发效率,本文将介绍如何在Spring和Hibernate之间进行整合,并提供相关问题的解答。Spring配置文件1、1 配置数据源……

    2024-01-11
    0204
  • java中mapper的作用是什么

    Java中Mapper的作用在Java项目中,尤其是在使用MyBatis框架的项目中,Mapper是一个非常重要的概念,Mapper是MyBatis中的一个接口,它定义了与数据库交互的方法,这些方法通常包括插入、更新、删除和查询等操作,Mapper的主要作用是将业务层与数据层解耦,使得业务层可以不用关心具体的实现细节,只需要与Mapp……

    2024-01-15
    0191
  • java如何连接mysql数据库

    Java连接MySQL数据库在Java中,我们通常使用JDBC(Java Database Connectivity)来连接和操作数据库,以下是使用Java连接MySQL数据库的步骤:1、导入MySQL JDBC驱动我们需要下载MySQL的JDBC驱动(mysql-connector-java),并将其添加到项目的类路径中,可以通过M……

    行业资讯 2024-03-08
    0179
  • 怎么配置MyBatis的SQL映射文件

    在MyBatis的XML配置文件中,使用`标签定义SQL映射文件,然后在、`等标签中编写SQL语句。

    2024-05-23
    0106

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入