BeetlSQL 研发自 2015 年,核心和生态扩展全部自研。目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,入门快。
阅读文档 源码和例子 在线体验 多库使用 性能测试 插件支持
- 修复2年前调整,导致BeetlSQL不支持GeneralGet Bean
- 修复UpdateTemplateByIdBatchAMI导致List参数不启作用BUG
-
ORM性能测试,更新sqlutils 版本,最新JMH测试结果(注: Score越大越好)
BenchmarkModeCnt ScoreError Units
Beetl.addEntity thrpt5 133.190 ± 38.548ops/ms
Beetl.complexMappingthrpt5 236.289 ±288.370ops/ms
Beetl.executeJdbcSqlthrpt5 298.657 ± 80.480ops/ms
Beetl.executeTemplateSqlthrpt5 251.418 ± 77.757ops/ms
Beetl.getAllthrpt514.531 ±0.605ops/ms
Beetl.getEntity thrpt5 359.275 ± 85.099ops/ms
Beetl.lambdaQuery thrpt5 187.228 ± 59.697ops/ms
Beetl.one2Manythrpt5 178.041 ±181.829ops/ms
Beetl.pageQuery thrpt5 148.982 ± 39.327ops/ms
Beetl.sqlFile thrpt5 249.206 ±100.083ops/ms
DBVisitor.addEntity thrpt599.294 ± 33.564ops/ms
DBVisitor.executeJdbcSqlthrpt5 185.177 ± 50.993ops/ms
DBVisitor.executeTemplateSqlthrpt5 3.189 ±0.748ops/ms
DBVisitor.getAllthrpt5 3.163 ±0.980ops/ms
DBVisitor.getEntity thrpt5 125.683 ± 44.190ops/ms
DBVisitor.lambdaQuery thrpt594.314 ± 38.499ops/ms
DBVisitor.pageQuery thrpt549.954 ± 18.254ops/ms
EasyQuery.addEntity thrpt598.904 ± 39.890ops/ms
EasyQuery.complexMappingthrpt567.397 ± 59.919ops/ms
EasyQuery.executeJdbcSqlthrpt5 243.160 ± 48.080ops/ms
EasyQuery.getAllthrpt514.896 ±2.219ops/ms
EasyQuery.getEntity thrpt5 134.370 ± 67.962ops/ms
EasyQuery.lambdaQuery thrpt5 137.292 ± 53.438ops/ms
EasyQuery.one2Manythrpt575.083 ± 53.738ops/ms
EasyQuery.pageQuery thrpt584.596 ± 46.942ops/ms
Flex.addEntitythrpt586.484 ± 40.022ops/ms
Flex.getAll thrpt5 2.926 ±0.993ops/ms
Flex.getEntitythrpt573.445 ± 39.437ops/ms
Flex.pageQuerythrpt533.999 ± 26.776ops/ms
Jdbc.addEntitythrpt5 225.223 ±304.585ops/ms
Jdbc.executeJdbcSql thrpt5 691.616 ±145.280ops/ms
Jdbc.getAll thrpt535.827 ±7.295ops/ms
Jdbc.getEntitythrpt5 678.791 ±165.527ops/ms
Jpa.addEntity thrpt553.219 ± 78.543ops/ms
Jpa.executeJdbcSqlthrpt560.734 ± 61.299ops/ms
Jpa.executeTemplateSqlthrpt564.478 ± 48.688ops/ms
Jpa.getAllthrpt5 4.710 ±2.062ops/ms
Jpa.getEntity thrpt556.325 ± 53.744ops/ms
Jpa.one2Manythrpt592.168 ±111.591ops/ms
Jpa.pageQuery thrpt558.756 ± 48.056ops/ms
MyBatis.addEntity thrpt540.533 ± 12.461ops/ms
MyBatis.complexMappingthrpt5 106.348 ± 57.688ops/ms
MyBatis.executeTemplateSqlthrpt546.953 ± 13.541ops/ms
MyBatis.getAllthrpt5 5.394 ±0.502ops/ms
MyBatis.getEntity thrpt545.303 ± 11.928ops/ms
MyBatis.lambdaQuery thrpt523.756 ± 13.613ops/ms
MyBatis.pageQuery thrpt516.190 ±5.682ops/ms
MyBatis.sqlFile thrpt542.558 ± 18.025ops/ms
SqlUtils.addEntitythrpt5 232.501 ±332.656ops/ms
SqlUtils.executeJdbcSql thrpt5 682.610 ±171.506ops/ms
SqlUtils.getAll thrpt544.353 ±4.346ops/ms
SqlUtils.getEntitythrpt5 643.873 ±131.587ops/ms
Wood.addEntitythrpt5 105.097 ± 79.961ops/ms
Wood.executeJdbcSql thrpt5 127.020 ± 48.142ops/ms
Wood.executeTemplateSql thrpt5 129.193 ± 44.455ops/ms
Wood.getAll thrpt5 2.051 ±0.524ops/ms
Wood.getEntitythrpt5 126.104 ± 41.976ops/ms
Wood.lambdaQuerythrpt5 125.013 ± 43.991ops/ms
Wood.pageQuerythrpt5 220.101 ± 90.028ops/ms
Wood.sqlFilethrpt5 132.431 ± 50.141ops/ms
maven
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>3.35.1-RELEASE</version>
</dependency>
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 |