Mybatis 插入数据后返回自增主键ID

1 xml 映射文件中处理

在映射器中配置获取记录主键值

在xml中 insert 标签中定义 :

  • useGeneratedKeys为true,用来设置返回主键id的值,

  • keyProperty 代表数据库记录主键字段

  • keyColumn 代表 java对象成员属性名

    insert into t_user (name,age) values (#{name},#{age})
2 接口注解处理

在接口映射器中通过注解@Options分别设置参数useGeneratedKeys,keyProperty,keyColumn值 如下

// 返回主键字段id值
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Insert("insert  into t_user (name,age) values (#{name},#{age})")
void insert(Student stu);
3 Mybatis Plus 中

调用 BaseMapper 的 insert方法后 ,默认将自增主键封装在 插入对象中

4 聊一聊 useGeneratedKeys

在MyBatis中,允许设置名称为“useGeneratedKeys”参数存在3个位置如下:

  • 在settings元素中设置useGeneratedKeys参数
  • 在xml映射器中设置useGeneratedKeys参数
  • 在接口映射器中设置useGeneratedKeys参数
4.1 在settings元素中设置useGeneratedKeys参数

对于支持自动生成记录主键的数据库,如:MySQL,SQL Server,此时设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID。

5 注意事项

使用useGeneratedKeys生成主键时,不能在DAO层使用@Param注解传递参数,否则无法获取主键。

///Dao层对应的代码  不能使用 @Param注解传递参数
/// Long savNewUser(@Param("user") User user);
 Long savNewUser( User user);
///Mapper对应的映射层
 <insert id="add" useGeneratedKeys="true" keyProperty="id">
     insert into t_user(u_name,u_age) VALUES (#{user.userName},#{user.userAget})
 </insert>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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` 类中添加其他方法,如查询、更新等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值