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