1474 字
约 4 分钟
1
BeetlSQL 入门

1. 一句话简介

BeetlSQL 是一个国产 ORM(对象关系映射)框架,基于 Beatl 模板引擎构建,主打「内置 CRUD + 灵活 SQL」两条路线。它像 JPA/MyBatis-Plus 一样,通过继承 BaseMapper 接口即可获得 insertdeleteByIdupdateTemplateByIdsingleallcreateLambdaQuery().page() 等开箱即用的增删改查与分页方法;同时又像 MyBatis 一样,允许用 Beetl 模板语法(Markdown 文件)手写 SQL,灵活处理复杂查询。

核心要解决的问题是:在保持手写 SQL 灵活性的同时,把常规 CRUD 和分页操作从日常编码中解放出来。官方提供 beetl-framework-starter 与 Spring Boot 集成,@Table 注解配实体类、UnderlinedNameConversion 自动完成驼峰字段与下划线列名的映射。

2. 什么时候使用

✅ 适用场景

  • 标准 CRUD 为主、偶尔有复杂查询的小型业务:通过 BaseMapper 内置方法即可完成,无需为每个表编写映射文件和接口方法。
  • 追求模板化、可动态拼接的动态 SQL:Beetl 模板语法(分支、循环、变量)比 XML 拼接更贴近模板语言,适合查询条件动态组合的场景。
  • 分页查询:内置 PageQuery + createLambdaQuery(),一行即得总行数与当前页数据,无需额外引入分页插件。
  • 偏好中文文档、国产开源组件的团队:BeetlSQL 文档对中文友好,且与 Beatl 模板引擎同源。
  • 需要代码生成、希望实体既当 ORM 模型又做模板数据绑定的场景:实体可直接用于 SQL 模板渲染。

❌ 不适用 / 需谨慎

  • 与主流 ORM 深度集成的既有项目:集成不够顺畅——官方 starter 无法直接用 Spring Boot 的自动数据源配置,需通过 @Configuration 手动创建名为 datasourceHikariDataSource Bean,否则启动失败(本 demo 的最大坑点)。
  • 团队以 XML Mapper / JPA 生态为技术栈:迁移到 BeetlSQL 需额外学习模板语法,且第三方资料与社区规模远小于 MyBatis 和 JPA。
  • 对框架生态和招聘面有要求的团队:国内独立框架,社区活跃度有限,遇到深水区问题可参考的资料少。
  • 复杂企业级 / 大规模复杂领域建模:实体与数据库表耦合较紧,缺少 Hibernate 式的继承、关联、乐观锁等丰富语义,复杂领域建模表达力弱。
  • 强依赖 Spring Data 自动配置的微服务:BeetlSQL 需显式接管数据源,与「零配置」的 Spring 惯例存在摩擦。

3. 常见业务场景

用户信息 CRUD: 这是本 demo 的核心演示逻辑。UserDao extends BaseMapper<User> 直接获得增删改查能力,userDao.insert(user, true) 插入并自动回填自增主键,userDao.updateTemplateById(user) 做模板更新(只更新非 null 字段,null 字段不会被写成 NULL),single(id)all() 分别完成单查与列表查询。中小系统用户模块无需写任何 Mapper SQL。

列表分页查询: 后台管理系统的列表页几乎都要分页。userDao.createLambdaQuery().page(currentPage, pageSize) 一行代码返回 PageQuery<User>(含 listtotalRow),免去手写 LIMIT/COUNT 与插件配置,适合高频率分页场景。

批量数据写入: 如批量导入、初始化测试数据。userDao.insertBatch(users) 原生支持批量插入,比循环单插效率更高,适合数据迁移、批量灌库类需求。

动态条件查询报表 / 组合筛选: 当筛选条件随参数变化时,用 Beetl 模板在 SQL 中做条件分支与循环动态拼接,比字符串手工拼接更安全易读,比 MyBatis XML 更贴近模板语言,适合查询条件多变的统计与查询页。

4. 同类技术对比

维度 BeetlSQL MyBatis / MyBatis-Plus Spring Data JPA
内置 CRUD 自带 BaseMapper,免写方法 原生无,需 MyBatis-Plus 补充 自带 JpaRepository,能力最全
SQL 编写方式 Beetl 模板语法(Markdown 文件)或注解 XML Mapper 或注解 JPQL / 方法名派生查询 / @Query
复杂 SQL 表达力 模板语言 + 动态拼接,灵活 XML 映射成熟,控制力最强 复杂 SQL 需 JPQL 推导,较弱
分页支持 内置 PageQuery + Lambda 查询 原生需 PageHelper 插件 内置 Pageable + Page<T>
命名转换 内置 UnderlinedNameConversion XML 需配置 mapUnderscoreToCamelCase Hibernate ImplicitNamingStrategy
学习成本 中等,需懂 Beetl 模板语法 中等,需熟 XML 映射 较低,多为注解驱动
Spring Boot 集成 官方 starter,但需手动配置数据源(坑多) 无缝集成 无缝集成
分布式 / 大型系统支持 一般,生态与资料有限 强,全球使用广泛,运维经验多 强,Spring 官方维护
适用规模 中小型、以 CRUD + 动态查询为主 中大型,复杂查询多 中型,领域模型驱动 / 快速开发

选型建议:

  • 复杂、可控的 SQL 和报表查询为主,团队熟悉 SQL —— 选 MyBatis(+ MyBatis-Plus),生态成熟、控制力最强。
  • 领域的对象模型为中心,快速开发 CRUD 与关系映射 —— 选 Spring Data JPA,与 Spring 生态融为一体、学习成本低。
  • 想要内置 CRUD 开箱即用、又希望用模板语言写动态 SQL,且愿意接受手动数据源配置与较小社区的独立项目 —— 可选 BeetlSQL,尤其适合偏好中文文档、与 Beatl 视图模板同一家的场景。
BeetlSQL 入门
http://clxhxhhr.top/posts/476/
作者
clxstart
发布于
2026-09-07
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。