BeetlSQL 3 指南
About 1924 wordsAbout 6 min
1984-01-24
数据访问框架
BeetlSQL的目标是提供开发敏捷,维护便捷,运行高速的数据库访问框架,在一个系统多表,多库,主从库的情况下,提供一致的编写代码方式。支持如下数据平台
- 传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQL Server,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓,PolarDB,万里开源GreatSQL,南大通用GBase8s等
- 大数据:HBase,ClickHouse,Cassandar,Hive
- 物联网时序数据库:Machbase,TD-Engine,IotDB
- SQL查询引擎:Drill,Presto,Druid
- 内存数据库:ignite,CouchBase
BeetlSQL目标是代替传统的Hibernate,JPA,MyBatis,提供真正适合企业开发用的数据库ORM开发框架
BeetlSQL 不仅仅是简单的类似MyBatis或者是Hibernate,或者是两者的综合,BeetlSQL目的是对标甚至超越Spring Data,是实现数据访问统一的框架,无论是传统数据库,还是大数据,还是查询引擎或者时序库,内存数据库。
访问在线体验网站,直接试用BeetlSQL http://121.42.237.11:8080/beetlsql_online/
如果有未支持的数据库(能基于JDBC访问),那请联系我 xiandafu@126.com, 或者参考《扩展BeetlSQL3》 自行适配
适合用户
- 如果你觉得mybatis,myabtis-plus 也不错,但也想看看其他国产数据库访问框架
- 你不想把精力浪费在简单据库增删改查上?BeetlSQL 内置数据库的CRUD功能
- 你是属于以SQL为中心的程序员派别。BeetlSQL提供了较好的SQL管理,以及内置大量SQL
- 你是对代码可维护性有高要求的架构师?BeetlSQL的设计目的就是尽可能提高数据库访问代码可维护性
- 平台级产品需要跨库,支持各种客户数据库的?BeetlSQL 支持各种库,程序员编写一次,能运行到各种数据库
- 系统需要连接多种库,比如连接商品库,连接订单库,或者设备基本信息在MySQL,设备数据在Clickhouse里。BeetlSQL很容易支持各种库,并能一统一的方式使用
- 系统初期单库单表,长期需要多库多表?BeetlSQL很容易实现多库多表而不需要程序员过多关注。
如果你对BeetlSQL3不了解,建议先看《BeetlSQL3特点》章节。看看BeetlSQL3的功能和代码风格你是否喜欢。如果喜欢,可以阅读《快速开始》动手实践,或者《SpringBoot 快速开始》。
编译源码
git clone https://gitee.com/xiandafu/beetlsql
mvn clean package
mvn clean install # 如果想修改源码
注意:BeetlSQL3 集成了Spring,以及支持大数据等,就算配置了国内镜像,也可能需要很长时间下载大数据依赖包,为了让编译快速通过,你需要进入pom.xml ,屏蔽sql-integration,sql-db-support,sql-jmh三个模块
<modules>
<!--核心功能 -->
<module>sql-core</module>
<module>sql-mapper</module>
<module>sql-util</module>
<module>sql-fetech</module>
<!-- 打包到一起 -->
<module>beetlsql</module>
<module>sql-gen</module>
<module>sql-test</module>
<module>sql-samples</module>
<!-- 集成和扩展太多的数据库,可以被屏蔽,以加速项目下载jar -->
<!-- <module>sql-integration</module>-->
<!-- <module>sql-jmh</module>-->
<!-- <module>sql-db-support</module>-->
</modules>
如果你对beetlsql的性能,以及其他ORM性能感兴趣,可以阅读《beetlsql性能》
直接看代码
如果项目编译通过,那可以直接运行单元测试或者samples模块的实例代码
sql-test包含了单元测试,有60+单元测试方法,采用了H2数据库,数据脚本是
db-init.sql
因此可以直接运行任何一个单元测试方法.sql-samples 又包含了三个模块大约100个例子,所有例子也采用了H2数据库,可以直接使用。
- quickstart: BeetlSQL基础使用例子,可以快速了解BeetlSQL3
- usage: BeetlSQL所有API和功能
- plugin:BeetlSQL高级扩展实例
以usage模块为例子,包含如下代码
- S01MapperSelectSample 15个例子, mapper中的查询演示
- S02MapperUpdateSample 11个例子, mapper中更新操作
- S03MapperPageSample 3个例子,mapper中的翻页查询
- S04QuerySample 9个例子,Query查询
- S05QueryUpdateSample 3个例子,Query完成update操作
- S06SelectSample 14个例子,SQLManager 查询API
- S07InsertSample 8个例子,SQLManager 插入新数据API,主键生成
- S08UpdateSample 6个例子,更新数据
- S09JsonMappingSample 5个例子, json配置映射
- S10FetchSample 2个例子,关系映射
- S11BeetlFunctionSample 2个例子,自定义sql脚本的方法
Sql-integration包含了spring等框架的单元测试例子
- sql-spring 包含spring单库,多库单元测试
- sql-springboot 包含了springboot 单库,多库单元测试
- sql-jfinal 包含了jfinal单元测试
- sql-solon,包含了solon单元测试
- sql-act 包含了act框架单元测试
本书大部分例子都来自sql-samples 或者单元测试
如果你想通过运行例子了解beetlsql后面的运行机制,可以在如下类尝试Debug断点
- SchemaMetadataManager.initTable 获取表描述
- ClassAnnotation 构造函数,解析POJO类的注解
- AbstractDBStyle.genXXX, dbStyle用来生成内置各种sql语句地方
- MarkdownClasspathLoader.querySQL 查询外部SQL
- MapperJava8Proxy.invoke, BeetlSQL 的mapper方法实现机制
- BaseSQLExecutor.select , 包含了查询语句内部执行的过程,参数封装,sql模板语句到sql语句,以及查询结果映射到POJO
作者介绍
李家智,这个名字不出名,网名闲大赋比较出名,是国内Beetl,BeetlSQL等基础软件开源作者,工作了22年Java编程,算是国内最早的IT打工人,45岁。至今谨小慎微的还在一线熬开发。经常发表博客,技术,架构见解。
现定居北京西城,曾在一流的电信厂商,外企干过,也在一流的互联网电商干过,熟悉JavaEE,熟悉Spring,熟悉分布式.
我的其他作品
Beetl 高性能模板引擎,广泛用于国内外公司,也作为很多开源技术框架的基础技术。
SpringBoot Plus,简单易用的,国内首个基于Spring Boot的后台系统框架。目前没有精力维护,但可以作为学习springboot框架的入门开发平台
SpringBoot BBS ,简单安全的Java BBS。
电子工业出版社《Java系统性能优化实战》,来自与多年Java系统稳定性,性能实践,电子版有470页内容。
电子工业出版社《Spring Boot 2 精髓》国内第一本Spring Boot2的书籍,畅销书
能有俩本正规出版社的畅销书,俩个流行开源的程序员,国内少有,目测就我一个人了
我的博客节选
中年程序员传 小说
关于Thymeleaf是Spring Boot 推荐的模板谣言
我的故事 科幻
我的理想是未来能有流传的科幻小说,已经有些题材,比如把万年敌人数字化,关入数字世界,再比如穷人出卖自己神经元给富人,让富人能反复享受预刺激神经带来的愉悦 等题材