首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mybatis @Insert annotation for Mysql和H2 -需要一种使用Point for mysql和ST_Point for H2的方法

问mybatis @Insert annotation for Mysql和H2 -需要一种使用Point for mysql和ST_Point for H2的方法
EN

Stack Overflow用户
提问于 2020-11-01 07:47:21
回答 1查看 56关注 0票数 0

我有一个由注释指定的Mybatis的insert语句,并且我需要基于数据库H2或MySQL在insert中有一个不同的查询-基本上是:

mysql的INSERT POINT(#{lat}, #{lng}) INTO table和H2的INSERT ST_POINT(#{lat}, #{lng}) INTO table。

我如何为注释指定数据库类型,或者(通常)如何使用注释配置来完成此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 19:20:48

从版本3.5.5开始,MyBaits在注释中支持databaseId。

在下面的示例中,第一个INSERT将用于H2,第二个INSERT将用于MySQL,第三个INSERT将用于其他插入(SQL语法可能无效,但您应该明白了)。

代码语言:javascript
复制
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。

代码语言:javascript
复制
<databaseIdProvider type="DB_VENDOR">
  <property name="H2" value="h2"/>
  <property name="MySQL" value="mysql"/>
</databaseIdProvider>

mybatis-spring-boot-starter也有相同的配置:

代码语言:javascript
复制
@Bean
VendorDatabaseIdProvider vendorDatabaseIdProvider() {
  VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
  Properties vendorProperties = new Properties();
  vendorProperties.put("H2", "h2");
  vendorProperties.put("MySQL", "mysql");
  databaseIdProvider.setProperties(vendorProperties);
  return databaseIdProvider;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64627459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档