- 修复性能加速扩展包不支持 primitive 类型数据
- 增强XML扩展包与SpringBoot框架集成能力
- 增加单表多租户模式的支持,使用sql重写功能
BeetlSQL 支持多数据源,多表这俩种租户实现模式,也支持单表实现多租户模式,单表租户模式使用SQL重写扩展包来完成。
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-tenant |
采用sql重写,支持单表多租户模式,逻辑删除,数据权限功能 |
使用加速扩展性能优化结果:能达到一半手写 JDBC 的性能
| 查询 |
优化前(ops/ms) |
优化后 (ops/ms) |
纯 jdbc |
mybatis |
JPA |
| beetlsqlExecuteJdbc |
222 |
318 |
678 |
/ |
64 |
| beetlsqlExecuteTemplate |
198 |
268 |
/ |
44 |
66 |
| beetlsqlFile |
191 |
266 |
/ |
41 |
/ |
| beetlsqlInsert |
139 |
129 |
248 |
43 |
59 |
| beetlsqlGetAll |
5 |
13 |
40 |
4 |
5 |
| beetlsqlLambdaQuery |
150 |
196 |
/ |
9 |
/ |
| beetlsqlPageQuery |
128 |
159 |
/ |
17 |
59 |
| beetlsqlSelectById |
186 |
259 |
670 |
43 |
61 |
sql-tenant支持多租户,数据权限,逻辑删除等 需要重写sql,增加额外过滤条件的场景,可以运行RewriteTest和TenantTest了解如何使用
//简单集成
TenantConfig tenantConfig = new TenantConfig();
tenantConfig.config(sqlManager);
tenantConfig.addColRewriteConfig(new ColRewriteParam("tenant_id", new ColValueProvider() {
@Override
public Object getCurrentValue() {
return localValue.get();
}
}));
如上应该在应用初始化时候配置,这样,当遇到sql中的表具有tenant_id字段的时候,将会发生sql改写,改写的值为ColValueProvider提供 如下sql
select * from user u ;
将被改写成
select * from user u where u.tenant_id= x
需要注意,并不是所有sql都被改写,只有集成了RewriteBaseMapper的Mapper发出的操作才能触发sql改写(SqlRewriteInterceptor)
如下mapper的select方法,或者是内置的all,updateById,都会触发改写
public interface MyRewriteMapper extends RewriteBaseMapper<OrderLog> {
List<OrderLog> select(String name);
}
逻辑删除,数据权限过滤也可以用此方法,比如,通过dept_id 来过滤数据权限
tenantConfig.addColRewriteConfig(new ColRewriteParam("dept_id", new ColValueProvider() {
@Override
public Object getCurrentValue() {
return Array.asList(1,2,3);
}
}));
那么如下sql
select * from user u ;
会重写
select * from user u where u.dept_id in (1,2,3);
maven
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>3.25.0-RELEASE</version>
</dependency>
BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQL 也好,BeetlSQL 都能满足这要求,目前支持的数据库如下
- 传统数据库:MySQL (包括支持 MySQL 协议的各种数据库), MariaDB ,Oralce ,Postgres (包括支持 Postgres 协议的各种数据库), DB2 , SQL Server ,H2 , SQLite , Derby ,神通,达梦,华为高斯,人大金仓,PolarDB,GBase8s,GreatSQL 等
- 大数据:HBase,ClickHouse,Cassandar,Hive,GreenPlum
- 物联网时序数据库:Machbase,TD-Engine,IotDB
- SQL 查询引擎:Drill,Presto,Druid
- 内存数据库:ignite,CouchBase
阅读文档 源码和例子 在线体验 多库使用 性能测试