From 4a03baac906b8596c8fe7c6cb6cebe1c45361be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Fri, 21 Apr 2023 12:25:51 +0800 Subject: [PATCH] update docs --- docs/.vitepress/config.ts | 1 + docs/zh/multi-datasource.md | 20 ++++++- docs/zh/support-database.md | 53 +++++++++++++++++++ .../mybatisflex/test/EntityTestStarter.java | 18 +++++-- 4 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 docs/zh/support-database.md diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 85a8496e..bc9fe5b9 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -34,6 +34,7 @@ export default defineConfig({ {text: '和同类框架「功能」对比', link: '/zh/comparison'}, {text: '和同类框架「性能」对比', link: '/zh/benchmark'}, {text: '和 Spring 整合 常见问题', link: '/zh/mybatis-flex-with-spring'}, + {text: '支持的数据库类型', link: '/zh/support-database'}, {text: 'QQ 交流群', link: '/zh/qq-group'}, ] }, diff --git a/docs/zh/multi-datasource.md b/docs/zh/multi-datasource.md index 93dea22c..731d8bff 100644 --- a/docs/zh/multi-datasource.md +++ b/docs/zh/multi-datasource.md @@ -166,4 +166,22 @@ mybatis-flex: ::: tip 提示 在数据源的配置中,`type` 可以配置为某个 DataSource 的类名,也可以配置为别名,别名支持有:`druid`、 `hikari`、`hikaricp`、`bee`、`beecp`、`dbcp`、`dbcp2`。 -::: \ No newline at end of file +::: + +## 动态添加新的数据源 + +在多租户等某些场景下,我们可能需要用到动态的添加新的数据源,此时可以通过如下的方式进行添加。 + +```java +FlexDataSource flexDataSource = (FlexDataSource) FlexGlobalConfig + .getDefaultConfig().getConfiguration() + .getEnvironment().getDataSource(); + +//新的数据源 +HikariDataSource newDataSource = new HikariDataSource(); + +flexDataSource.addDataSource("newKey", newDataSource); +``` + +> 需要注意的是:通过 FlexGlobalConfig 去获取 FlexDataSource 时,需等待应用完全启动成功后,才能正常获取 FlexDataSource, +> 否则将会得到 null 值。 \ No newline at end of file diff --git a/docs/zh/support-database.md b/docs/zh/support-database.md new file mode 100644 index 00000000..ace08a14 --- /dev/null +++ b/docs/zh/support-database.md @@ -0,0 +1,53 @@ +# Mybatis-Flex 支持的数据库类型 + +Mybatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。 + + +| 数据库 | 描述 | +| -------- | -------- | +| mysql | MySql 数据库 | +| mariadb | MariaDB 数据库 | +| oracle | Oracle11g 及以下数据库 | +| oracle12c | Oracle12c 及以上数据库 | +| db2 | DB2 数据库 | +| hsql | HSQL 数据库 | +| sqlite | SQLite 数据库 | +| postgresql | HSQL 数据库 | +| hsql | Postgre 数据库 | +| sqlserver2005 | SQLServer2005 数据库 | +| sqlserver | SQLServer 数据库 | +| dm | 达梦数据库 | +| xugu | 虚谷数据库 | +| kingbasees | 人大金仓数据库 | +| phoenix | Phoenix HBase 数据库 | +| gauss | Gauss 数据库 | +| clickhouse | ClickHouse 数据库 | +| gbase | 南大通用(华库)数据库 | +| gbase-8s | 南大通用数据库 GBase 8s | +| oscar | 神通数据库 | +| sybase | Sybase ASE 数据库 | +| OceanBase | OceanBase 数据库 | +| Firebird | Firebird 数据库 | +| derby | Derby 数据库 | +| highgo | 瀚高数据库 | +| cubrid | CUBRID 数据库 | +| goldilocks | GOLDILOCKS 数据库 | +| csiidb | CSIIDB 数据库 | +| hana | SAP_HANA 数据库 | +| impala | Impala 数据库 | +| vertica | Vertica 数据库 | +| xcloud | 行云数据库 | +| redshift | 亚马逊 redshift 数据库 | +| openGauss | 华为 openGauss 数据库 | +| TDengine | TDengine 数据库 | +| informix | Informix 数据库 | +| greenplum | Greenplum 数据库 | +| uxdb | 优炫数据库 | + + +## 数据库方言 + +在某些场景下,比如用户要实现自己的 SQL 生成逻辑时,我们可以通过实现自己的方言达到这个目的,实现方言分为两个步骤: + +- 1、编写自己的方言类,实现 `IDialect` 接口 +- 2、通过 `DialectFactory.registerDialect()` 方法注册自己的方言 \ No newline at end of file diff --git a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java index 50d581ae..c4496c6c 100644 --- a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java +++ b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/EntityTestStarter.java @@ -52,15 +52,27 @@ public class EntityTestStarter { // .groupBy(ACCOUNT.ID); // List accounts = accountMapper.selectListByQuery(wrapper); -// + // QueryWrapper queryWrapper = new QueryWrapper(); // queryWrapper.where(ACCOUNT.ID.in( -// select(ACCOUNT.ID).from(ACCOUNT) +// select(ACCOUNT.ID).from(ACCOUNT).where(ACCOUNT.ID.in( +// select(ACCOUNT.ID).from(ACCOUNT) +// ) +// ) // )); // -// Page paginate = accountMapper.paginate(new Page<>(1,10),queryWrapper); +// Page paginate = accountMapper.paginate(1,10,queryWrapper); // System.out.println(paginate); +// List accounts = new ArrayList<>(); +// for (int i = 0; i < 10; i++) { +// Account account = new Account(); +// account.setUserName("test" + i); +// accounts.add(account); +// } +// +// accountMapper.insertBatch(accounts); + // Account account = accountMapper.selectOneById(1); // System.out.println(account);