mybatis @Insert annotation for Mysql and H2 - 需要一种方法来使用 Point for mysql and ST_Point for H2
mybatis @Insert annotation for Mysql and H2 - need a way to use Point for mysql and ST_Point for H2
我有一个由注释指定的 Mybatis 插入语句,我需要在基于数据库 H2 或 MySQL 的插入中有一个不同的查询 - 基本上:
INSERT POINT(#{lat}, #{lng}) INTO table
用于 mysql 和 INSERT ST_POINT(#{lat}, #{lng}) INTO table
用于 H2。
如何指定注释的数据库类型或如何(通常)使用注释配置完成此操作?
自3.5.5版本开始,MyBaits支持databaseId
注解
对于以下示例,第一个 INSERT 将用于 H2,第二个将用于 MySQL,第三个将用于其他(SQL 语法可能是无效,但你明白了)。
public interface YourMapper {
@Insert(value = "INSERT ST_POINT(#{lat}, #{lng}) INTO table", databaseId = "h2")
@Insert(value = "INSERT POINT(#{lat}, #{lng}) INTO table", databaseId = "mysql")
@Insert(value = "INSERT INTO table VALUES (POINT(#{lat}, #{lng}))")
int insert(YourParameter param);
}
您可能还需要在配置中配置databaseIdProvider。
<databaseIdProvider type="DB_VENDOR">
<property name="H2" value="h2"/>
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
mybatis-spring-boot-starter 的相同配置:
@Bean
VendorDatabaseIdProvider vendorDatabaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties vendorProperties = new Properties();
vendorProperties.put("H2", "h2");
vendorProperties.put("MySQL", "mysql");
databaseIdProvider.setProperties(vendorProperties);
return databaseIdProvider;
}
我有一个由注释指定的 Mybatis 插入语句,我需要在基于数据库 H2 或 MySQL 的插入中有一个不同的查询 - 基本上:
INSERT POINT(#{lat}, #{lng}) INTO table
用于 mysql 和 INSERT ST_POINT(#{lat}, #{lng}) INTO table
用于 H2。
如何指定注释的数据库类型或如何(通常)使用注释配置完成此操作?
自3.5.5版本开始,MyBaits支持databaseId
注解
对于以下示例,第一个 INSERT 将用于 H2,第二个将用于 MySQL,第三个将用于其他(SQL 语法可能是无效,但你明白了)。
public interface YourMapper {
@Insert(value = "INSERT ST_POINT(#{lat}, #{lng}) INTO table", databaseId = "h2")
@Insert(value = "INSERT POINT(#{lat}, #{lng}) INTO table", databaseId = "mysql")
@Insert(value = "INSERT INTO table VALUES (POINT(#{lat}, #{lng}))")
int insert(YourParameter param);
}
您可能还需要在配置中配置databaseIdProvider。
<databaseIdProvider type="DB_VENDOR">
<property name="H2" value="h2"/>
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
mybatis-spring-boot-starter 的相同配置:
@Bean
VendorDatabaseIdProvider vendorDatabaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties vendorProperties = new Properties();
vendorProperties.put("H2", "h2");
vendorProperties.put("MySQL", "mysql");
databaseIdProvider.setProperties(vendorProperties);
return databaseIdProvider;
}