浅谈mybatis主键生成的几种策略
使用数据库自增主键
对于支持自增主键的数据库(如 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,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-10-10
详解Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片
这篇文章主要介绍了Java实现批量压缩图片裁剪压缩多种尺寸缩略图一键批量上传图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-03-03
Java利用Spire.XLS for Java实现在Excel文件中添加或删除分节符
在复杂的Excel报表中,合理设置分节符能有效提升文档结构与可读性,尤其在打印输出时效果显著,本文将深入探讨如何利用Spire.XLS for Java轻松实现Excel分节符的添加与删除,希望对大家有所帮助2025-11-11


最新评论