我有一个由注释指定的Mybatis的insert语句,并且我需要基于数据库H2或MySQL在insert中有一个不同的查询-基本上是:
mysql的INSERT POINT(#{lat}, #{lng}) INTO table和H2的INSERT ST_POINT(#{lat}, #{lng}) INTO table。
我如何为注释指定数据库类型,或者(通常)如何使用注释配置来完成此操作?
发布于 2020-11-01 19:20:48
从版本3.5.5开始,MyBaits在注释中支持databaseId。
在下面的示例中,第一个INSERT将用于H2,第二个INSERT将用于MySQL,第三个INSERT将用于其他插入(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;
}https://stackoverflow.com/questions/64627459
复制相似问题