我正在使用 MyBatis 来开发我的应用程序。现在我偶然发现了一种情况,sql 查询应该返回最后插入的 id 给我,
我使用 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>
请参阅documentation here .
关于java - 使用Mybatis和不同DB进行集成测试和开发时如何进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018566/