mirror of
https://github.com/cool-team-official/cool-admin-java-docs.git
synced 2026-10-06 15:23:25 +08:00
2 lines
8.2 KiB
JavaScript
2 lines
8.2 KiB
JavaScript
import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":null}'),a={name:"src/guide/db.md"},s=e('<h1 id="数据库" tabindex="-1">数据库 <a class="header-anchor" href="#数据库" aria-label="Permalink to "数据库""></a></h1><p>Cool Admin 集成了比 <a href="https://baomidou.com/" target="_blank" rel="noreferrer">Mybatis-Plus</a> 更加强大的,<a href="https://mybatis-flex.com/" target="_blank" rel="noreferrer">Mybatis-Flex</a>,详细用法请查看 <a href="https://mybatis-flex.com/" target="_blank" rel="noreferrer">Mybatis-Flex 官网文档</a></p><p>主要特点;</p><ul><li><p>更轻量:除了 MyBatis 本身,再无任何第三方依赖,因此会带来更高的自主性、把控性和稳定性。在任何一个系统中,依赖越多,稳定性越差。</p></li><li><p>更灵活:提供了非常灵活的 QueryWrapper,支持关联查询、多表查询、多主键、逻辑删除、乐观锁更新、数据填充、数据脱敏等等。</p></li><li><p>高性能:通过独特的架构,没有任何 MyBatis 拦截器、在 SQL 执行的过程中,没有任何的 SQL Parse,因此会带来指数级的性能增长。</p></li></ul><h2 id="功能对比" tabindex="-1">功能对比 <a class="header-anchor" href="#功能对比" aria-label="Permalink to "功能对比""></a></h2><table tabindex="0"><thead><tr><th>功能或特点</th><th>MyBatis-Flex</th><th>MyBatis-Plus</th><th>Fluent-MyBatis</th></tr></thead><tbody><tr><td>对 entity 的基本增删改查</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>分页查询</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>分页查询之总量缓存</td><td>✅</td><td>✅</td><td>❌</td></tr><tr><td>分页查询无 SQL 解析设计(更轻量,及更高性能)</td><td>✅</td><td>❌</td><td>✅</td></tr><tr><td>多表查询: from 多张表</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>多表查询: left join、inner join 等等</td><td>✅</td><td>❌</td><td>✅</td></tr><tr><td>多表查询: union,union all</td><td>✅</td><td>❌</td><td>✅</td></tr><tr><td>单主键配置</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>多种 id 生成策略</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>支持多主键、复合主键</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>字段的 typeHandler 配置</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>除了 MyBatis,无其他第三方依赖(更轻量)</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>QueryWrapper 是否支持在微服务项目下进行 RPC 传输</td><td>✅</td><td>❌</td><td>未知</td></tr><tr><td>逻辑删除</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>乐观锁</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>SQL 审计</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>数据填充</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>数据脱敏</td><td>✅</td><td>✔️ <strong>(收费)</strong></td><td>❌</td></tr><tr><td>字段权限</td><td>✅</td><td>✔️ <strong>(收费)</strong></td><td>❌</td></tr><tr><td>字段加密</td><td>✅</td><td>✔️ <strong>(收费)</strong></td><td>❌</td></tr><tr><td>字典回写</td><td>✅</td><td>✔️ <strong>(收费)</strong></td><td>❌</td></tr><tr><td>Db + Row</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>Entity 监听</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>多数据源支持</td><td>✅</td><td>借助其他框架或收费</td><td>❌</td></tr><tr><td>多数据源是否支持 Spring 的事务管理,比如 <code>@Transactional</code> 和 <code>TransactionTemplate</code> 等</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>多数据源是否支持 "非 Spring" 项目</td><td>✅</td><td>❌</td><td>❌</td></tr><tr><td>多租户</td><td>✅</td><td>✅</td><td>❌</td></tr><tr><td>动态表名</td><td>✅</td><td>✅</td><td>❌</td></tr><tr><td>动态 Schema</td><td>✅</td><td>❌</td><td>❌</td></tr></tbody></table><div class="warning custom-block"><p class="custom-block-title">注意</p><p>以上内容来自第三方相关产品的官方文档或第三方平台,若有错误,欢迎纠正。</p></div><h2 id="支持数据库" tabindex="-1">支持数据库 <a class="header-anchor" href="#支持数据库" aria-label="Permalink to "支持数据库""></a></h2><p>MyBatis-Flex 支持的数据库类型,如下表格所示,我们还可以通过自定义方言的方式,持续添加更多的数据库支持。</p><table tabindex="0"><thead><tr><th>数据库</th><th>描述</th></tr></thead><tbody><tr><td>mysql</td><td>MySQL 数据库</td></tr><tr><td>mariadb</td><td>MariaDB 数据库</td></tr><tr><td>oracle</td><td>Oracle11g 及以下数据库</td></tr><tr><td>oracle12c</td><td>Oracle12c 及以上数据库</td></tr><tr><td>db2</td><td>DB2 数据库</td></tr><tr><td>H2</td><td>H2 数据库</td></tr><tr><td>hsql</td><td>HSQL 数据库</td></tr><tr><td>sqlite</td><td>SQLite 数据库</td></tr><tr><td>postgresql</td><td>PostgreSQL 数据库</td></tr><tr><td>sqlserver2005</td><td>SQLServer2005 数据库</td></tr><tr><td>sqlserver</td><td>SQLServer 数据库</td></tr><tr><td>dm</td><td>达梦数据库</td></tr><tr><td>xugu</td><td>虚谷数据库</td></tr><tr><td>kingbasees</td><td>人大金仓数据库</td></tr><tr><td>phoenix</td><td>Phoenix HBase 数据库</td></tr><tr><td>gauss</td><td>Gauss 数据库</td></tr><tr><td>clickhouse</td><td>ClickHouse 数据库</td></tr><tr><td>gbase</td><td>南大通用(华库)数据库</td></tr><tr><td>gbase-8s</td><td>南大通用数据库 GBase 8s</td></tr><tr><td>oscar</td><td>神通数据库</td></tr><tr><td>sybase</td><td>Sybase ASE 数据库</td></tr><tr><td>OceanBase</td><td>OceanBase 数据库</td></tr><tr><td>Firebird</td><td>Firebird 数据库</td></tr><tr><td>derby</td><td>Derby 数据库</td></tr><tr><td>highgo</td><td>瀚高数据库</td></tr><tr><td>cubrid</td><td>CUBRID 数据库</td></tr><tr><td>goldilocks</td><td>GOLDILOCKS 数据库</td></tr><tr><td>csiidb</td><td>CSIIDB 数据库</td></tr><tr><td>hana</td><td>SAP_HANA 数据库</td></tr><tr><td>impala</td><td>Impala 数据库</td></tr><tr><td>vertica</td><td>Vertica 数据库</td></tr><tr><td>xcloud</td><td>行云数据库</td></tr><tr><td>redshift</td><td>亚马逊 redshift 数据库</td></tr><tr><td>openGauss</td><td>华为 openGauss 数据库</td></tr><tr><td>TDengine</td><td>TDengine 数据库</td></tr><tr><td>informix</td><td>Informix 数据库</td></tr><tr><td>greenplum</td><td>Greenplum 数据库</td></tr><tr><td>uxdb</td><td>优炫数据库</td></tr><tr><td>Doris</td><td>Doris 数据库</td></tr><tr><td>Hive SQL</td><td>Hive 数据库</td></tr><tr><td>lealone</td><td>Lealone 数据库</td></tr><tr><td>sinodb</td><td>星瑞格数据库</td></tr></tbody></table><div class="warning custom-block"><p class="custom-block-title">注意</p><p>虽然 Mybatis-flex 支持很多数据库,但是 Cool Admin 是具体的业务框架,无法做到全部支持,那样工作量太大了。但是它为我们提供了改造的可能,理论上你只需修改一些不兼容的代码就可以正常运行了。</p><p>除了 Mysql,我们正在适配:<code>PostgreSQL</code>、<code>Sqlite</code></p></div><h2 id="自动建表" tabindex="-1">自动建表 <a class="header-anchor" href="#自动建表" aria-label="Permalink to "自动建表""></a></h2><p>根据 Java 实体,自动映射成数据库的表结构。</p><p>用过 JPA 的都知道,JPA 有一项重要的能力就是表结构自动维护,这让我们可以可以专注于业务逻辑和实体,而不需要关心数据库的表、列的配置,尤其是开发过程中频繁的新增表及变更表结构,节省了大量手动工作。</p><p>框架集成了<a href="https://autotable.tangzc.com/" target="_blank" rel="noreferrer">Auto Table</a>,可以自动创建表,并且支持表字段的修改。</p><div class="warning custom-block"><p class="custom-block-title">注意</p><p>切勿在生产环境开启自动建表功能,因为这可能会造成数据丢失。</p></div>',16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default};
|