Java中向数据库中插入数据后获取自增 ID 的方法

概要

在进行数据库插入操作后,获取自增ID的方式取决于你使用的数据库以及持久层框架。这里将提供几种常见的情况下获取自增ID的方法

1、MyBatis 使用 MySQL 数据库

如果在 MyBatis 中使用 MySQL 数据库进行插入操作,可以通过以下方式获取自增ID

在插入操作后使用 SELECT LAST_INSERT_ID() 查询最后插入的自增ID。

<insert id="insertUser" parameterType="User">
    <!-- 插入语句 -->
</insert>

<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
    SELECT LAST_INSERT_ID()
</selectKey>

或者,可以在插入操作中使用 useGeneratedKeys=“true” 属性。

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
</insert>

在这两种情况下,插入后会将自增ID设置到 User 对象的 id 属性中。

2、 MyBatis 使用 PostgreSQL 数据库

对于 PostgreSQL 数据库,可以在插入操作后通过 returning 子句获取自增ID

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
    RETURNING id
</insert>

3、MyBatis-Plus 使用任何数据库

如果使用 MyBatis-Plus 进行数据库操作,不需要显式获取自增ID。MyBatis-Plus 会自动将插入后的自增ID设置到实体类的相应属性中。你只需要在实体类中将自增ID的属性与数据库字段进行映射即可。

public class UserService {

    @Autowired
    private UserMapper userMapper;

    public Long insertUser(User user) {
        userMapper.insert(user);
        return user.getId(); // 获取自增 ID
    }

    // 其他方法...
}

在插入操作后,id 属性会被设置为插入生成的自增ID。

总结

无论使用哪种方式,都可以轻松获取插入后的自增ID,具体取决于您的数据库和持久层框架的支持。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus 插入数据并返回自增 ID 可以通过以下步骤实现: 1. 创建一个实体类,用于映射数据库表的字段和属性。 2. 在实体类,标注 `@TableName` 注解,指定对应的数据库表名。 3. 在实体类,使用 `@TableId` 注解标注主键字段,并设置 `@TableId(type = IdType.AUTO)`,表示使用数据库自增主键。 4. 调用 MyBatis Plus 提供的 `insert` 方法插入数据插入成功后,自增 ID 将会被赋值到实体类对应的字段上。 以下是一个示例代码: ```java import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; @Repository public interface UserMapper extends BaseMapper<User> { } @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public boolean saveUser(User user) { return save(user); } } @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; // 省略 getter 和 setter } ``` 在上述示例,`User` 类是一个实体类,对应数据库的 `user` 表。`id` 字段使用 `@TableId(type = IdType.AUTO)` 注解标注为自增主键。 在 `UserServiceImpl` 类,调用 `save` 方法插入数据插入成功后,自增 ID 将会被赋值到 `user` 对象的 `id` 字段上。 你可以根据你的需求在 `UserServiceImpl` 类添加其他方法,如查询、更新等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值