MyBatis中插入(insert)后返回主键(key)的注解方式
一般我们插入数据后需要知道其自增的主键key是多少,有两种方式:
用@Options注解:
比如这里有个订单(Order)相关的DAO:
1 | public interface OrderDao { |
这里的keyProperty表示对象中的成员变量,keyColumn表示数据库中的列名,因此我们这里数据库主键名称就是id ,其实此处不写keyColumn也是可以的,因为我们只是读不是写。此外,如果你Order实体中主键名称就叫”id”的话,keyProperty也不用写了。
实体类则如下:
1 | public class Order { |
最后通过 order.getId() 方法就能拿到生成的主键,注意这里不是通过insertOrder方法的返回值来拿到的,所以我特意写成了void方法,如果写成int类型,返回的值只是表示本次插入是否成功而已(1 or 0)。
用@SelectKey注解
还是和上面一样:
1 |
|
这里的before指的是select语句是否在insert之前执行,显然我们这里需要先写后读,所以是false。
此外,select last_insert_id()也可以换成 @@identity , 效果一样。
参考:
https://www.cnblogs.com/weiyinfu/p/6835301.html#6
https://stackoverflow.com/questions/4283159/how-to-return-ids-on-inserts-with-mybatis-in-mysql-with-annotations
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Pig Cat!
评论