Как сделать интеграционное тестирование при использовании Mybatis и разных БД для Интеграционного тестирования и разработки - PullRequest
0 голосов
/ 25 июня 2018

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

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

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

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

1 Ответ

0 голосов
/ 26 июня 2018

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

См. Документацию здесь .

...