java—使用mybatis和不同的db进行集成测试和开发时如何进行集成测试

jhdbpxl9  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(414)

我正在使用mybatis开发我的应用程序。现在我偶然发现了一种情况,sql查询应该将最后插入的id返回给我,
我使用mysql进行开发,使用h2db进行集成测试。
在mysql中,我们使用last_insert_id()函数来获取此id,但在h2 db中,我们使用currval()函数。即使我在mysql中使用sequence,这种语法也会有所不同。
现在的问题是我应该如何编写集成测试代码。因为我为开发编写的查询也用于集成测试。在这种情况下我该怎么办

q5lcpyga

q5lcpyga1#

如果您使用的是spring boot,那么可以尝试将以下属性放入test application.properties文件中。只有一行:

spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL

关键字是mode=mysql,它适合我。

lndjwyie

lndjwyie2#

您可以基于数据库类型或其他可用变量(例如,具有当前概要文件的环境变量)使用动态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>

请参阅此处的文档。

相关问题