本文将介绍SpringBoot Mysql 环境下,Mybatis 设置主键自增并返回。
作者本人也是参考网上的写法,中间由于设置自增主键名称和实体类的主键对应不上,所以就把坑记录下来。
UserClient.xml
<insert id="insert" keyProperty="clientId" useGeneratedKeys="true" parameterType="com.springairlines.security.authorize.model.UserClient" >
insert into authen_userclientdetails (deviceId, addressIp,
userId)
values ( #{deviceid,jdbcType=VARCHAR}, #{addressip,jdbcType=VARCHAR},
#{userid,jdbcType=VARCHAR})
</insert>
注意这个 keyProperty="clientId" 是指的实体类中的属性名称,因为我的数据库主键是client_id 所以之前一直没成功!
属性解释说明 :
id = "insert" : mapper.java中对应的接口
parameterType = "com.security.authorize.model.TokenInfo
" : 是传进来参数的类型, 这里传进来的是一个数据库表对应的pojo
userGeneratedKeys = "true" : 是在支持主键自增的数据库中使用主键自增属性
keyProperty = "clientId" 是com.security.authorize.model.TokenInfo这个pojo类中的主键对应属性, 加上这句之后,记录保存之后会把主键设置到 rapId中去
也就是说 执行插入操作之后可以通过 TokenInfo.getTokenId 获取到插入的主键
附加 : 另一个属性 : keyColumn( 只有在自增主键不是在表的第一列时候使用 ) keyColumn = "client_id' (authen_userclientdetails
为表中的列名)
同时 insert 操作会返回一个int值, 该值是表中记录的数目