MyBatis配置以及获取自增主键

在开发中,通常会有这种情况:在插入数据库记录后,想得到插入记录的主键,用以后面的业务代码,那么mybatis针对这种情况提供了相应的支持(不支持批量插入)。假设一张MySQL数据库中的user表,其中id为自增主键。那么在开发时我们要获取一条刚插入的user记录的id,此时分两种情况。

接口映射器SQL(通过注解写的SQL)

例如:

@Insert("insert into sys_user(username, password) values(#{username}, #{password})
int save(User user);

这种情况,我们要获取新插入记录的主键id的值同样也通过添加注解获取。添加如下注解。

/**
 *useGeneratedKeys:是否允许JDBC支持自动生成主键,true表示允许
 *keyProperty:JavaBean中的属性名,对应user表中的id字段,即需要自增的字段。不是数据库表的字段名,这里要注意!
 */
@Options(useGeneratedKeys = true, keyProperty = "id")

完整代码:

@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into sys_user(username, password) values(#{username}, #{password}")
int save(User user);
  • XML映射器SQL(xxxMapper.xml中写的SQL)

例如:

<insert id="save" parameterType="User">
  insert into sys_user(username, password) values(#{username}, #{password}
</insert>

这种情况,我们需要再添加两个属性:

1、useGeneratedKeys="true"  

2、keyProperty="id"

这两个属性与上面所讲的注解中的两个属性作用相同,这里不再赘述。

完整代码如下:

<insert id="save" parameterType="User" useGeneratedKeys="true" keyProperty="id">
	insert into sys_user(username, password) values(#{username}, #{password}
</insert>
  •  接收与使用自增主键

      通过如上的配置后,我们便可以在业务代码中接收返回的自增id。代码如下:

@Override
public User saveUser(UserDto userDto) {
    User user = userDto;
	userDao.save(user);
	Integer userId = user.getId();
	return user;
}

   这样我们便能尽情使用刚插入的记录的id了。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值