Как сделать интеграционное тестирование при использовании Mybatis и разных БД для Интеграционного тестирования и разработки

0

Я использую MyBatis для разработки моего приложения. Теперь я наткнулся на ситуацию, когда SQL-запрос должен вернуть мне последний вставленный идентификатор,

Я использую MySql для разработки и H2 DB для тестирования интеграции.

В MySql мы используем функцию last_insert_id() для получения этого id, но в H2 DB мы используем функцию currval(). Даже если я использую последовательность в MySql, этот синтаксис будет отличаться.

Теперь вопрос заключается в том, как я могу написать код тестирования интеграции. Поскольку тот же запрос, который я написал для разработки, используется для тестирования интеграции. что я должен делать в такой ситуации

  • 0
    last_insert_id() представляется функцией MySQL, а не Oracle.
  • 0
    извините, я использовал MySQL, а не оракул DB. не знал, так как я не настроил Dbeaver
Теги:
integration-testing
mybatis
h2

1 ответ

1

Вы можете использовать динамический 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>

Обратитесь к документации здесь.

  • 0
    Я считаю, что интеграционное тестирование должно быть сделано на коде, который не зависит от базы данных. и наш код должен работать для обеих баз данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню