Mybatis插入记录后返回主键的实践

1、Mybatis文档给出的解决方案

@Insert("insert into table2 (name) values(#{name})")
@SelectKey(statement="call identity()", keyProperty="nameId", before=false, resultType=int.class)
int insertTable2(Name name);
  • statement参数存放要执行的SQL语句
  • keyProperty存放的是定义的实体类的属性
  • before可以指定为true或false以指明statement定义的SQL语句在插入语句之前还是之后执行,这里采用之后执行
  • resultType指定keyProperty的类型

我按照上面的操作,在我的代码中进行补充,结果是执行不了,给出的错误原因是我的数据库没有identity这个SQL语句。所以我采用了第二种方法可以。

2、Options柳暗花明又一村

@Insert("INSERT INTO user(u_name,u_sex,u_birthday,u_signature,u_avatar) VALUES (#{uName},#{uSex},#{uBirthday},#{uSignature},#{uAvatar})")
@Options(useGeneratedKeys = true, keyProperty = "uId", keyColumn = "u_id")
long insertUser(User user);
  • useGeneratedKeys为true是在执行添加记录之后可以获取到数据库自动生成的主键ID
  • keyProperty存放的是定义的实体类的属性
  • keyColumn对应的是数据库表中的列名

这里需要注意的是,insertUser方法返回的是1或者0是指执行成功或失败

此时主键值是存放在实体里了,所以使用user.getUId()即可获得(根据你的写法进行修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值