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

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月23日 09:35
下一篇 2024年1月23日 09:36

相关推荐

发表回复

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

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