Я использую MyBatis для разработки моего приложения. Теперь я наткнулся на ситуацию, когда SQL-запрос должен вернуть мне последний вставленный идентификатор,
Я использую MySql для разработки и H2 DB для тестирования интеграции.
В MySql мы используем функцию last_insert_id() для получения этого id, но в H2 DB мы используем функцию currval(). Даже если я использую последовательность в MySql, этот синтаксис будет отличаться.
Теперь вопрос заключается в том, как я могу написать код тестирования интеграции. Поскольку тот же запрос, который я написал для разработки, используется для тестирования интеграции. что я должен делать в такой ситуации
Вы можете использовать динамический SQL, основанный на любом типе базы данных, или, возможно, другую имеющуюся у вас переменную (например, переменную среды с текущим профилем). Пример из документации:
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
<if test="_databaseId == 'oracle'">
select seq_users.nextval from dual
</if>
<if test="_databaseId == 'db2'">
select nextval for seq_users from sysibm.sysdummy1"
</if>
</selectKey>
insert into users values (#{id}, #{name})
</insert>
Обратитесь к документации здесь.
last_insert_id()
представляется функцией MySQL, а не Oracle.