在做项目的过程中有时候难免会运用到新增一条数据并获取到新增的这条数据的主键ID,这样的一个功能,新增一条订单数据,并返回新增订单的ID。这样做的前提是数据的ID必须为自增。
我是用ssm框架做的项目,首先在mapper包里对应接口定义一个返回主键的方法
随后在对应的mapping的实现的xml文件里的新增返回主键的语句添加一个useGeneratedKeys = true和一个keyProperty="返回的主键ID"的属性 ,
useGeneratedKeys:
(仅对insert有用)这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
keyProperty:
(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认:不设置。
如下图所示:
注意的是这里的keyProperty里的id是po实体类所对应的ID,并不是数据库表所对应的字段。然后再去Service层对应的接口增加这样一个方法
再去对应的实现类去实现,然后再在对应的实现类注入 ,并实现这个方法,代码如下:
接下来就是在controller层去调用,如下图:
需要注意的是这里返回的int类型的数据仍然是数据修改的条数而不是新增返回的ID,而要获取对应的ID,还是得执行新增以后,从对应的实体类中去获取新增返回的ID