Mybatis插入数据返回主键
useGeneratedKeys:
(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false。
keyProperty:(仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)。如果生成列不止一个,可以用逗号分隔多个属性名称。
keyColumn:(仅对insert和update有用)此属性用于设置第几列是主键,当主键不是表中的第一列时需要设置。在需要联合主键时,值可以用逗号隔开。
通俗来说:
useGeneratedKeys=true能够返回主键ID
keyProperty="对象id":我们插入的时候传入一个object,object对象有一个id属性并未赋值,当我们设置了这两项之后,mybatis会将表中的id返回并注入object的id属性中。
常见误区:不能直接使用mapper方法的返回值来获取值,会获取到错误值,因为方法的返回值只会返回你所操作的数据表的记录数----------要使用传入对象的getId属性来获取。
代码展示:
//mapper映射文件
<insert id="add" parameterType="com.itheima.pojo.CheckGroup" useGeneratedKeys="true" keyProperty="id">
insert into t_checkgroup(code,name,helpCode,sex,remark,attention)
values (#{code},#{name},#{helpCode},#{sex},#{remark},#{attention})
</insert>
//service层方法
checkGroupDao.add(checkGroup);//执行添加操作
checkGroup.getId()//获取主键id