找回密码
 立即注册
搜索
查看: 81|回复: 6

BeetlSQL 3.41 发布,翻页查询增强

[复制链接]

7

主题

37

回帖

0

积分

积分
0
发表于 2026-10-21 14:00:09 | 显示全部楼层 |阅读模式
BeetlSQL 研发自 2015 年,核心和生态扩展全部自研。目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,入门快。

阅读文档 源码和例子 在线体验 多库使用 性能测试 插件支持

本次发布新增 BeetlSQL executePageQuery,允许传递一个查询总数的语句,不依赖于BeetlSQL自动生成。

  1. String sql = "select #{page()}  from sys_user order by id   ";
  2. String sqlCount = "select count(1) from sys_user   ";
  3. PageResult<User> ret =  sqlManager.executePageQuery(sql,sqlCount,User.class,null,smallRequest);
  4. Assert.assertEquals(13,ret.getTotalRow());
  5. Assert.assertEquals(2,ret.getTotalPage());
  6. Assert.assertEquals(10,ret.getList().size());
复制代码



JOOQ(Java Object Oriented Querying) 是一个 Java 生态的开源 SQL 构建与数据访问库,主打类型安全 SQL + 数据库优先 + 代码生成

  1. JooqHelper jooqHelper = new JooqHelper(sqlManager);

  2. ReLog reLog= jooqHelper.queryOne(ReLog.class,
  3.     create ->    create.select().from(ORDER_LOG).where(ORDER_LOG.VERSION.eq(100))
  4. );
  5.                        
复制代码

Maven

  1. <dependency>
  2.     <groupId>com.ibeetl</groupId>
  3.     <artifactId>sql-jooq</artifactId>
  4.     <version>3.41.0-RELEASE</version>
  5. </dependency>
复制代码

BeetlSQL 核心功能



BeetlSQL 核心

功能



sql-core

核心包,封装了 JDBC 操作,SQL 文件管理,注解的注解管理



sql-fetch

类似 Hibernate 那样提供 @Fetch,@FetchMany,@FetchOne 等注解



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 重写,支持单表多租户,多表多租户等模式,支持逻辑删除,数据权限功能


sql-template-sugar         模版语法糖,增加了 and or asc,desc,set 等格式化函数

sql-jooq         jooq 集成,支持多表联合查询的类型安全 SQL 编写


使用加速扩展性能优化结果:能达到近一半手写 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



JMH 性能测试

  1. Benchmark                                  Mode  Cnt     Score      Error   Units
  2. Beetl.addEntity                           thrpt    5   133.190 ±   38.548  ops/ms
  3. Beetl.complexMapping                      thrpt    5   236.289 ±  288.370  ops/ms
  4. Beetl.executeJdbcSql                      thrpt    5   298.657 ±   80.480  ops/ms
  5. Beetl.executeTemplateSql                  thrpt    5   251.418 ±   77.757  ops/ms
  6. Beetl.getAll                              thrpt    5    14.531 ±    0.605  ops/ms
  7. Beetl.getEntity                           thrpt    5   359.275 ±   85.099  ops/ms
  8. Beetl.lambdaQuery                         thrpt    5   187.228 ±   59.697  ops/ms
  9. Beetl.one2Many                            thrpt    5   178.041 ±  181.829  ops/ms
  10. Beetl.pageQuery                           thrpt    5   148.982 ±   39.327  ops/ms
  11. Beetl.sqlFile                             thrpt    5   249.206 ±  100.083  ops/ms
  12. DBVisitor.addEntity                       thrpt    5    99.294 ±   33.564  ops/ms
  13. DBVisitor.executeJdbcSql                  thrpt    5   185.177 ±   50.993  ops/ms
  14. DBVisitor.executeTemplateSql              thrpt    5     3.189 ±    0.748  ops/ms
  15. DBVisitor.getAll                          thrpt    5     3.163 ±    0.980  ops/ms
  16. DBVisitor.getEntity                       thrpt    5   125.683 ±   44.190  ops/ms
  17. DBVisitor.lambdaQuery                     thrpt    5    94.314 ±   38.499  ops/ms
  18. DBVisitor.pageQuery                       thrpt    5    49.954 ±   18.254  ops/ms
  19. EasyQuery.addEntity                       thrpt    5    98.904 ±   39.890  ops/ms
  20. EasyQuery.complexMapping                  thrpt    5    67.397 ±   59.919  ops/ms
  21. EasyQuery.executeJdbcSql                  thrpt    5   243.160 ±   48.080  ops/ms
  22. EasyQuery.getAll                          thrpt    5    14.896 ±    2.219  ops/ms
  23. EasyQuery.getEntity                       thrpt    5   134.370 ±   67.962  ops/ms
  24. EasyQuery.lambdaQuery                     thrpt    5   137.292 ±   53.438  ops/ms
  25. EasyQuery.one2Many                        thrpt    5    75.083 ±   53.738  ops/ms
  26. EasyQuery.pageQuery                       thrpt    5    84.596 ±   46.942  ops/ms
  27. Flex.addEntity                            thrpt    5    86.484 ±   40.022  ops/ms
  28. Flex.getAll                               thrpt    5     2.926 ±    0.993  ops/ms
  29. Flex.getEntity                            thrpt    5    73.445 ±   39.437  ops/ms
  30. Flex.pageQuery                            thrpt    5    33.999 ±   26.776  ops/ms
  31. Jdbc.addEntity                            thrpt    5   225.223 ±  304.585  ops/ms
  32. Jdbc.executeJdbcSql                       thrpt    5   691.616 ±  145.280  ops/ms
  33. Jdbc.getAll                               thrpt    5    35.827 ±    7.295  ops/ms
  34. Jdbc.getEntity                            thrpt    5   678.791 ±  165.527  ops/ms
  35. Jpa.addEntity                             thrpt    5    53.219 ±   78.543  ops/ms
  36. Jpa.executeJdbcSql                        thrpt    5    60.734 ±   61.299  ops/ms
  37. Jpa.executeTemplateSql                    thrpt    5    64.478 ±   48.688  ops/ms
  38. Jpa.getAll                                thrpt    5     4.710 ±    2.062  ops/ms
  39. Jpa.getEntity                             thrpt    5    56.325 ±   53.744  ops/ms
  40. Jpa.one2Many                              thrpt    5    92.168 ±  111.591  ops/ms
  41. Jpa.pageQuery                             thrpt    5    58.756 ±   48.056  ops/ms
  42. MyBatis.addEntity                         thrpt    5    40.533 ±   12.461  ops/ms
  43. MyBatis.complexMapping                    thrpt    5   106.348 ±   57.688  ops/ms
  44. MyBatis.executeTemplateSql                thrpt    5    46.953 ±   13.541  ops/ms
  45. MyBatis.getAll                            thrpt    5     5.394 ±    0.502  ops/ms
  46. MyBatis.getEntity                         thrpt    5    45.303 ±   11.928  ops/ms
  47. MyBatis.lambdaQuery                       thrpt    5    23.756 ±   13.613  ops/ms
  48. MyBatis.pageQuery                         thrpt    5    16.190 ±    5.682  ops/ms
  49. MyBatis.sqlFile                           thrpt    5    42.558 ±   18.025  ops/ms
  50. SqlUtils.addEntity                        thrpt    5   232.501 ±  332.656  ops/ms
  51. SqlUtils.executeJdbcSql                   thrpt    5   682.610 ±  171.506  ops/ms
  52. SqlUtils.getAll                           thrpt    5    44.353 ±    4.346  ops/ms
  53. SqlUtils.getEntity                        thrpt    5   643.873 ±  131.587  ops/ms
  54. Wood.addEntity                            thrpt    5   105.097 ±   79.961  ops/ms
  55. Wood.executeJdbcSql                       thrpt    5   127.020 ±   48.142  ops/ms
  56. Wood.executeTemplateSql                   thrpt    5   129.193 ±   44.455  ops/ms
  57. Wood.getAll                               thrpt    5     2.051 ±    0.524  ops/ms
  58. Wood.getEntity                            thrpt    5   126.104 ±   41.976  ops/ms
  59. Wood.lambdaQuery                          thrpt    5   125.013 ±   43.991  ops/ms
  60. Wood.pageQuery                            thrpt    5   220.101 ±   90.028  ops/ms
  61. Wood.sqlFile                              thrpt    5   132.431 ±   50.141  ops/ms
复制代码

原文链接

打赏作者

当前余额:0 Token,打赏后立即到账

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 14:15:01 | 显示全部楼层
深度好文,就是BeetlSQL那块还想看个具体例子,期待下篇。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 14:45:01 | 显示全部楼层
学到了,翻页查询增强这块之前一直似懂非懂,看完这篇清晰多了。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 15:15:01 | 显示全部楼层
深度好文,就是BeetlSQL那块还想看个具体例子,期待下篇。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 15:45:01 | 显示全部楼层
目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,入门快。
讲得挺透,翻页查询增强这块就该这么理解。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 16:15:01 | 显示全部楼层
好文,翻页查询增强的趋势基本被楼主说中了。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-21 16:45:01 | 显示全部楼层
有一说一,现在肯把翻页查询增强讲这么细的人不多了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

{ template common/footer}