浅谈mybatis主键生成的几种策略
作者:阿飞飞飞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主键生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
