我会在<selectKey>
标签内使用<insert>
标签
<insert>
<selectKey keyProperty="pk" resultType="Type" order="AFTER">
select myDBFunction( (select triggerGeneratedColumnInBinary from myTable where pk = triggerLogicToRetrieveLastGenerated(...) ) );
</selectKey>
...procedure call or insert...
</insert>
如果您发送的是对象而不是 Hashmap,则此代码将在插入后使用触发器生成的列设置解释器函数的结果。该方法仍将返回行数,但您的对象将拥有它的键。
System.out.println(myObject.getPk()); //0
int rows = myMapper.insertMyClass(myObject); // sets the pk
System.out.println(myObject.getPK()); //324
useGeneratedKeys 不会帮助你,因为它告诉 MyBatis 使用 JDBC getGeneratedKeys 方法来检索数据库内部生成的键(例如,在 RDBMS 中,如 MySQL 或 SQL Server 中的自动递增字段)。