MyBatis生成器:生成带有自动增量字段的映射器,这些字段可与Mysql和HSQLDB一起使用

MyBatis生成器:生成带有自动增量字段的映射器,这些字段可与Mysql和HSQLDB一起使用,mysql,generator,auto-increment,hsqldb,mybatis,Mysql,Generator,Auto Increment,Hsqldb,Mybatis,我正在使用MyBatis生成器为我的Mysql数据库生成映射程序。 我有一些带有自动增量字段的表,因此我将它们声明为“generatedKey”,它们可以按预期工作 现在我想使用HSQLDB为我的JUnit测试创建一个内存中的数据库。 我已经启用了HSQLDB的MySQL语法,但我的映射程序无法工作,因为为获取autoincrement字段的最后一个值而生成的语句不兼容 这是MyBatis生成器的配置文件: <generatorConfiguration> <classPath

我正在使用MyBatis生成器为我的Mysql数据库生成映射程序。 我有一些带有自动增量字段的表,因此我将它们声明为“generatedKey”,它们可以按预期工作

现在我想使用HSQLDB为我的JUnit测试创建一个内存中的数据库。 我已经启用了HSQLDB的MySQL语法,但我的映射程序无法工作,因为为获取autoincrement字段的最后一个值而生成的语句不兼容

这是MyBatis生成器的配置文件:

<generatorConfiguration>
<classPathEntry location="D:\mysql-connector-java-5.1.29.jar" />
<context id="Mysql" targetRuntime="MyBatis3">
    <plugin type="org.mybatis.generator.plugins.SerializablePlugin">
        <property name="suppressJavaInterface" value="false"/>
    </plugin>
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="xxxxxxxxxxxxxxxxxxxxxx"
        userId="xxxxx"
        password="xxxxx">
    </jdbcConnection>
    <javaModelGenerator targetPackage="it.test.dbTablesDTO" targetProject="src\main\java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <sqlMapGenerator targetPackage="it.test.dbTables" targetProject="src\main\resources">
        <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    <javaClientGenerator targetPackage="it.test.dbTables" type="XMLMAPPER" targetProject="src\main\java">
        <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    <table tableName="history" schema="hist">
        <generatedKey column="id_history" sqlStatement="MySql"/>
    </table>
</context>

我还尝试更改手册中编写的“JDBC”中sqlStatement的值,但是使用这个值,它既不适用于MySQL,也不适用于HSQLDB

这是使用sqlStatement=“MySql”生成的映射程序(我删除了不感兴趣的行):


选择最后一个插入ID()
载入历史(
)
价值观(
)

如您所见,“SELECT LAST_INSERT_ID()”语句显然与高超音速不兼容


有什么想法吗?

尝试在HSQLDB中创建自己的函数

CREATE FUNCTION LAST_INSERT_ID() RETURNS BIGINT
   RETURN IDENTITY();
CREATE FUNCTION LAST_INSERT_ID() RETURNS BIGINT
   RETURN IDENTITY();