# BeetlSQL
**Repository Path**: monkeyfx/beetlsql
## Basic Information
- **Project Name**: BeetlSQL
- **Description**: 简洁方便,功能强大的ORM工具
- **Primary Language**: Java
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 495
- **Created**: 2021-04-04
- **Last Updated**: 2021-04-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 数据访问框架
BeetlSQL的目标是提供**开发高效**,**维护高效**,**运行高效**的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台
* 传统数据库:MySQL,MariaDB,Oralce,Postgres,DB2,SQL Server,H2,SQLite,Derby,神通,达梦,华为高斯,人大金仓,PolarDB等
* 大数据:HBase,ClickHouse,Cassandar,Hive
* 物联网时序数据库:Machbase,TD-Engine,IotDB
* SQL查询引擎:Drill,Presto,Druid
* 内存数据库:ignite,CouchBase
BeetlSQL 不仅仅是简单的类似MyBatis或者是Hibernate,或者是俩着的综合,BeetlSQL远大理想是对标甚至超越Spring Data,是实现数据访问统一的框架,无论是传统数据库,还是大数据,还是查询引擎或者时序库,内存数据库。
> 直接在线试用BeetlSQL http://121.42.237.11:8080/beetlsql_online/
* 作者: 闲大赋,Gavin.King,Sue,Zhoupan,woate,darren,蚊子
* 开发时间:2015-07
* 网站 http://ibeetl.com
* qq群 219324263
BeetlSQL 3.x 使用说明,当前版本](https://www.kancloud.cn/xiandafu/beetlsql3_guide)
```xml
com.ibeetl
beetlsql
3.${version}
```
[BeetlSQL 2.x 使用说明,旧版本](README2.md)
```xml
com.ibeetl
beetlsql
2.13.3.RELEASE
```
## 适合用户
* 你不想把精力浪费在简单据库增删改查上?BeetlSQL 内置数据库的CRUD功能
* 你是属于以SQL为中心的程序员派别。BeetlSQL提供了较好的SQL管理,以及内置大量SQL
* 你是对代码可维护性有高要求的架构师?BeetlSQL的设计目的就是尽可能提高数据库访问代码可维护性
* 平台级产品需要跨库,支持各种客户数据库的?BeetlSQL 支持各种库,程序员编写一次,能运行到各种数据库
* 系统需要连接多种库,比如连接商品库,连接订单库,或者设备基本信息在MySQL,设备数据在Clickhouse里。BeetlSQL很容易支持各种库,并能一统一的方式使用
* 系统初期单库单表,长期需要多库多表?BeetlSQL很容易实现多库多表而不需要程序员过多关注。
## 编译源码
```java
git clone https://gitee.com/xiandafu/beetlsql
mvn clean package
mvn clean install #如果想修改源码
```
注意:BeetlSQL3 集成了Spring,以及支持大数据等,就算配置了国内镜像,也可能需要很长时间下载大数据依赖包,为了让编译快速通过,你需要进入pom.xml ,屏蔽sql-integration,sql-db-support,sql-jmh三个模块
```xml
sql-core
sql-mapper
sql-util
sql-fetech
beetlsql
sql-gen
sql-test
sql-samples
```
## 阅读源码例子
可以从模块`sql-samples`中找得到所有例子,或者从`sql-test` 中运行单元测试例子,或者在`sql-integration` 中的各个框架单元测试中找到相关例子。所有例子都是基于H2内存数据库,可以反复运行
以`sql-samples`为例子
sql-samples 又包含了三个模块大约100个例子
* quickstart: BeetlSQL基础使用例子,可以快速了解BeetlSQL3
* usuage: BeetlSQL所有API和功能
* plugin:BeetlSQL高级扩展实例
以usuage模块为例子,包含如下代码
* 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脚本的方法
## 代码示例
### 例子1,内置方法,无需写SQL完成常用操作
```java
UserEntity user = sqlManager.unique(UserEntity.class,1);
user.setName("ok123");
sqlManager.updateById(user);
UserEntity newUser = new UserEntity();
newUser.setName("newUser");
newUser.setDepartmentId(1);
sqlManager.insert(newUser);
```
输出日志友好,可反向定位到调用的代码
```
┏━━━━━ Debug [user.selectUserAndDepartment] ━━━
┣ SQL: select * from user where 1 = 1 and id=?
┣ 参数: [1]
┣ 位置: org.beetl.sql.test.QuickTest.main(QuickTest.java:47)
┣ 时间: 23ms
┣ 结果: [1]
┗━━━━━ Debug [user.selectUserAndDepartment] ━━━
```
### 例子2 使用SQL
```java
String sql = "select * from user where id=?";
Integer id = 1;
SQLReady sqlReady = new SQLReady(sql,new Object[id]);
List userEntities = sqlManager.execute(sqlReady,UserEntity.class);
//Map 也可以作为输入输出参数
List