浅谈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主键生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详细分析Java并发集合LinkedBlockingQueue的用法
这篇文章主要介绍了详细分析Java并发集合LinkedBlockingQueue的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04
Java使用Spire.Doc实现读取或删除Word文档属性
在日常的文档处理工作中,Word 文档的属性扮演着重要角色,本文将介绍如何使用 Spire.Doc for Java 这一开源组件,以编程方式读取和删除 Word 文档中的内置属性与自定义属性,感兴趣的小伙伴可以了解下2026-03-03


最新评论