浅谈mybatis主键生成的几种策略

 更新时间:2026年01月26日 10:23:31   作者:阿飞飞飞1234  
本文主要介绍了浅谈mybatis主键生成策略,包括使用数据库自增主键、使用UUID生成主键和使用MyBatis-Plus的雪花算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用数据库自增主键

对于支持自增主键的数据库(如 MySQL),可以在 MyBatis 的 `` 标签中设置 useGeneratedKeys="true"keyProperty 属性来自动获取并填充生成的主键值。

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>

使用 SELECT LAST_INSERT_ID() 函数
在插入数据后,通过 SELECT LAST_INSERT_ID() 函数获取自动生成的主键值,并使用 <selectKey> 标签将其赋值给实体对象的属性。

<insert id="insertUser" parameterType="User">
    INSERT INTO user (name, age) VALUES (#{name}, #{age})
    <selectKey resultType="int" keyProperty="id" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

使用 UUID 生成主键

对于需要唯一标识符的场景,可以在 Java 代码中生成 UUID,并将其作为主键值传入数据库。

public class User {
    private String id;
    
    public User() {
        this.id = UUID.randomUUID().toString();
    }
}

MyBatis-Plus 提供了更简便的主键生成方式,如雪花算法(Snowflake)。通过在实体类中使用 @TableId 注解并配置相应的主键策略,MyBatis-Plus 会自动填充主键 ID。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    
    //...
}

通过以上方法,MyBatis 可以根据不同的需求自动填充主键 ID,简化开发过程。

到此这篇关于浅谈mybatis主键生成策略的文章就介绍到这了,更多相关mybatis主键生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis 自定义实现拦截器插件Interceptor示例

    mybatis 自定义实现拦截器插件Interceptor示例

    这篇文章主要介绍了mybatis 自定义实现拦截器插件Interceptor,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • SpringBoot集成SpirePDF实现文本替换功能

    SpringBoot集成SpirePDF实现文本替换功能

    SpirePDF是一个用于.NET平台的高级PDF文档处理库,它提供了一套完整的API,允许开发者创建、编辑、转换、合并、分割和解析PDF文件本文给大家介绍了SpringBoot集成SpirePDF实现文本替换功能,需要的朋友可以参考下
    2024-09-09
  • 详解Spring Cloud Zuul重试机制探秘

    详解Spring Cloud Zuul重试机制探秘

    本篇文章主要介绍了详解Spring Cloud Zuul重试机制探秘,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片

    详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片

    这篇文章主要介绍了Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • SpringBoot实现向量数据库优化检索的方案及示例

    SpringBoot实现向量数据库优化检索的方案及示例

    在Spring Boot中实现RAG(Retrieval-Augmented Generation)的增强,可以从检索优化、生成优化和系统架构三个维度进行改进,本文给大家介绍了具体实现方案及示例,需要的朋友可以参考下
    2025-02-02
  • Java使用黑盒方式模拟实现内网穿透

    Java使用黑盒方式模拟实现内网穿透

    这篇文章主要介绍了Java使用黑盒方式模拟实现内网穿透,内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机,需要的朋友可以参考下
    2023-05-05
  • Java自动拆装箱简单介绍

    Java自动拆装箱简单介绍

    这篇文章主要为大家详细介绍了Java自动拆装箱的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Java利用Spire.XLS for Java实现在Excel文件中添加或删除分节符

    Java利用Spire.XLS for Java实现在Excel文件中添加或删除分节符

    在复杂的Excel报表中,合理设置分节符能有效提升文档结构与可读性,尤其在打印输出时效果显著,本文将深入探讨如何利用Spire.XLS for Java轻松实现Excel分节符的添加与删除,希望对大家有所帮助
    2025-11-11
  • SpringMVC JSON数据传输参数超详细讲解

    SpringMVC JSON数据传输参数超详细讲解

    有时候参数的传递还需要更多的参数,比如一个获取用户信息的请求中既有用户ID等基本参数,还要求对查询结果进行分页,针对这种场景,一般都会将分页参数封装成一个对象,然后将它和基本参数一起传给控制器
    2023-02-02
  • Java的MoreSuppliers工具类方法解析

    Java的MoreSuppliers工具类方法解析

    这篇文章主要介绍了Java的MoreSuppliers工具类方法解析,MoreSuppliers类是一个Java工具类,它提供了一些增强的Supplier函数,使得Supplier执行的结果可以被缓存,真正的调用只执行一次,需要的朋友可以参考下
    2024-01-01

最新评论