在使用mybatis框架时,如果数据库表的主键为自增,则意味着不需要生成主键id也能进行新增记录的操作,此时,下面方式可以获取新增记录的主键id
方式一
可以返回一个或多个字段,mysql/oracle数据库获取主键都可以使用。
mysql
<selectKey keyProperty="id" order="AFTER" resultType="int">
select LAST_INSERT_ID()
</selectKey>
oracle
<selectKey keyProperty="id" order= "BEFORE" resultType="int">
select SEQ_ID.nextval from dual
</selectKey>
keyProperty:selectKey标签中sql语句返回结果被设置的属性。如果需要返回多个列(eg:表中有多个字段自增),可以使用逗号分隔的属性名称;
order:获取主键(返回字段)与执行sql的顺序,取值为:AFTER/BEFORE。
1)、AFTER:先执行sql(插入数据),再获取主键设置keyProperty的值,mysql数据库中表字段自增使用;
2)、BEFORE:先获得主键(返回字段)设置keyProperty的值,再执行sql(插入数据),oracle数据库中表字段自增使用。
原因见结论中。
resultType:主键(返回字段)的类型,如果返回多个列,可以设置成map。
方式二
返回一个字段时使用,mysql数据库获取主键可以使用。
keyProperty="id" useGeneratedKeys="true"
useGeneratedKeys:使用JDBC的getGe