
BeetlSQL 研发自 2015 年,核心和生态扩展全部自研。目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,入门快。
阅读文档 源码和例子 在线体验 多库使用 性能测试 插件支持
本次调整:
- 调整SQLRewrite模块,支持多种多租户的设计
- 调整SpringBoot+Beetlsql的集成,支持多库或者主从库
- 调正SpringBoot的SQLManagerCustomize,支持SQLManager生命周期定制
- Query类提供方便的API,支持字段更新
maven
<dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.31-RELEASE</version> </dependency>
调整一,多租户支持
BeetlSQL调整了多库多租户的操作,非常简单的支持各种多租户应用场景,具体例子可以参考 https://gitee.com/xiandafu/springboot3-beetl-beetlsql-example
- master-slave-database 使用主从库,事务读总是使用从库,其他情况,写操作,或者混合读写操作。则统一使用主库
- mutiple-database 工程使用多种数据库,如财务,人力库等不同领域的库。
- tenant 多租户例子
- column-tenant-1: 单库单表多租户, 通过表的字段来区分多租户.采用beetlsql提供的sql重写功能
- column-tenant-2: 单库单表多租户, 通过表的字段来区分多租户.使用模板技术和自定义注解实现
- table-tenant-1:单库多表多租户,为每个租户建立一个表。采用beetlsql提供的sql重写功能,适合流行数据库(因为使用了jSqlParser支持主流数据库)
- table-tenant-2:单库多表租户,为每个租户建立一个表,使用beetl的模板技术
- schema-tenant: 单库多用户的多租户,使用数据库的用户来区分多租户,每个租户有一个数据用户,物理隔离
- database-tenant:多库租户,每个数据库一个租户,物理隔离,采用spring的动态数据源实现。这里的多库限于一种数据库
- database-style-tenant:同上,但数据库种类多样,每一类数据库都一个sqlmanager(sqlmananger的dbStyle设定,只能访问一种类型数据库)
调整二,Query提供方便的更新字段API
LambdaQuery<User> lambdaQuery1 = sqlManager.lambdaQuery(User.class); lambdaQuery1.andEq(User::getId,2).updateParams(User::getName,"a" ,User::getAge,18);
BeetlSQL 核心功能
BeetlSQL 核心 | 功能 |
sql-core | 核心包,封装了 JDBC 操作,SQL 文件管理,注解的注解管理 |
sql-fetch | 类似 Hibernate 那样提供 @Fetch,@FetchMany 等注解 |
sql-mapper | mapper 类定义和扩展,用户可以自定义自己的 mapper 和 mapper 的注解 |
sql-intergration | 整合 Spring,solon,jfinal 等框架,以及例子 |
sql-query | Query 和 LambdaQuery,用 Java API 构造和使用 SQL |
sql-mapping | 支持单表,多表与 POJO 的互相映射,支持 json 定义,xml 定义映射方式,或者约定习俗 |
sql-template | Beetl 模板实现,且支持其他模板语言 |
sql-gen | 代码生成抽象包,并提供默认实现可以生成 dao,sql 文件,md 文档 |
sql-db-support | 各种数据库的测试和验证,支持 33+ 数据库。 |
sql-samples | 包含了上百个使用 beetlsql 的例子 |
sql-test | 包含了上百个单元测试例子 |
BeetlSQL 最新扩展包
BeetlSQL 扩展包 | 功能 |
sql-xml | 高仿 myabtis 的 xml 语法,如果喜欢使用 xml 写 sql 模板的,可以使用此扩展包 |
sql-accelerator | 性能加速包,通过反射优化,缓存,让 beetlsql 性能提升 50%-200%,接近一半手写 JDBC 的性能 |
sql-firewall | sql 防火墙,避免不小心写的 sql 破坏数据库 |
sql-dynamic-table | 支持像访问静态表格那样防火动态表格,简化动态创建表格的业务需求开发 |
sql-bean-encrypt | 支持 @MD5 ,@AES 等对字段加密解密 |
sql-rewrite | 采用 sql 重写,支持单表多租户模式,逻辑删除,数据权限功能 |
SAGA(实验) | BeetSQL 的 SAGA 是实现,用 SAGA 微服务事务 |
使用加速扩展性能优化结果:能达到近一半手写 JDBC 的性能
查询 | 测试内容 | BeetlSQL(ops/ms) | 纯 jdbc | mybatis | JPA |
beetlsqlExecuteJdbc | 直接执行 JDBC | 318 | 678 | / | 64 |
beetlsqlExecuteTemplate | 执行 SQL 模板 | 268 | / | 44 | 66 |
beetlsqlFile | SQL 存放在文件统一管理 | 266 | / | 41 | / |
beetlsqlInsert | 插入一条 | 129 | 248 | 43 | 59 |
beetlsqlGetAll | 获取所有数据 | 13 | 40 | 4 | 5 |
beetlsqlLambdaQuery | Java 函数编写 SQL 执行查询 | 196 | / | 9 | / |
beetlsqlPageQuery | 翻页查询 | 159 | / | 17 | 59 |
beetlsqlSelectById | 查询一条 | 259 | 670 | 43 | 61 |
还没有评论,来说两句吧...