<p align="center">
<img alt="logo" src="https://gitee.com/xiandafu/beetlsql/raw/master/doc/bee-logo.png" width="120" height="120">
</p>
<p align="center">
<a href="http://ibeetl.com/">http://ibeetl.com</a>
</p>
<p align="center">
<a href="https://mvnrepository.com/search?q=g:com.ibeetl%20AND%20beetlsql"><img src="https://img.shields.io/maven-central/v/com.ibeetl/beetlsql.svg"></a>
<a href="https://www.oracle.com/java/technologies/downloads/"><img src="https://img.shields.io/badge/JDK-8+-red.svg"></a>
<a href="https://gitee.com/xiandafu/beetlsql/blob/master/LICENSE"><img src="https://img.shields.io/:license-BSD%203-green.svg?style=flat-square"></a>
</p>
## 简介
BeetlSQL的目标是提供**开发高效**,**维护高效**,**运行高效**的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台
* 传统数据库:MySQL(国内兼容MySQL协议的各种大数据库),MariaDB,Oracle,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(满) 252010126
## 文档
BeetlSQL 3.x 使用说明,当前版本](https://www.kancloud.cn/xiandafu/beetlsql3_guide)
社区提供的文档 https://beetlsql-doc.vercel.app
```xml
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>3.${version}</version>
</dependency>
```
[BeetlSQL 2.x 使用说明,旧版本](README2.md)
```xml
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>2.13.3.RELEASE</version>
</dependency>
```
## 适合用户
* 你不想把精力浪费在简单据库增删改查上?BeetlSQL 内置数据库的CRUD功能
* 你是属于以SQL为中心的程序员派别。BeetlSQL提供了较好的SQL管理,以及内置大量SQL
* 你是对代码可维护性有高要求的架构师?BeetlSQL的设计目的就是尽可能提高数据库访问代码可维护性
* 平台级产品需要跨库,支持各种客户数据库的?BeetlSQL 支持各种库,程序员编写一次,能运行到各种数据库
* 系统需要连接多种库,比如连接商品库,连接订单库,或者设备基本信息在MySQL,设备数据在Clickhouse里。BeetlSQL很容易支持各种库,并能一统一的方式使用
* 系统初期单库单表,长期需要多库多表?BeetlSQL很容易实现多库多表而不需要程序员过多关注。
## 编译源码
```bash
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
<modules>
<!--核心功能 -->
<module>sql-core</module>
<module>sql-mapper</module>
<module>sql-util</module>
<module>sql-fetch</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>
```
## 阅读源码例子
可以从模块`sql-samples`中找得到所有例子,或者从`sql-test` 中运行单元测试例子,或者在`sql-integration` 中的各个框架单元测试中找到相关例子。所有例子都是基于H2内存数据库,可以反复运行
以`sql-samples`为例子
sql-samples 又包含了三个模块大约100个例子
* quickstart: BeetlSQL基础使用例子,可以快速了解BeetlSQL3
* usuage: 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脚本的方法
BeetlSQL提供了saga事物管理一种思路,但目前还是试验版本,欢迎不怕死的人尝试,和我一起完善这部分,其例子可以在saga模块的单元测试中找到
## 代码示例
### 例子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<UserEntity> userEntities = sqlManager.execute(sqlReady,UserEntity.class);
//Map 也可以作为输入输出参数
List<Map> listMap = sqlManager.execute(sqlReady,Map.class);
```
### 例子3 使用模板SQL
```java
String sql = "select * from user where department_id=#{id} and name=#{name}";
UserEntity paras = new UserEntity();
paras.setDepartmentId(1);
paras.setName("lijz");
List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras);
String sql = "select * from user where id in ( #{join(ids)} )";
List list = Arrays.asList(1,2,3,4,5); Map paras = new HashMap();
paras.put("ids", list);
List<UserEntity> users = sqlManager.execute(sql, UserEntity.class, paras);
```
### 例子4 使用Query类
支持重构
```java
LambdaQuery<UserEntity> query = sqlManager.lambdaQuery(UserEntity.class);
List<UserEntity> entities = query.andEq(UserEntity::getDepartmentId,1)
.andIsNotNull(UserEntity::getName).select();
```
### 例子5 把数十行SQL放到sql文件里维护
```java
//访问user.md#select
SqlId id = SqlId.of("user","select");
Map map = new HashMap();
map.put("name","n");
List<UserEntity> list = sqlManager.select(id,UserEntity.class,map);
```
![](https://oscimg.oschina.net/oscnet/up-5f89c4abc4b0b777ff342b109c162b7298c.png)
### 例子6 复杂映射支持
支持像mybatis那样复杂的映射
* 自动映射
```java
@Data
@ResultProvider(AutoJsonMapper.class)
public static class MyUserView {
Integer id;
String name;
DepartmentEntity dept;
}
```
* 配置映射,比MyBatis更容易理解,报错信息更详细
```json
{
"id": "id",
"name": "name",
"dept": {
"id": "dept_id",
"name": "dept_name"
},
"roles": {
"id": "r_id",
"name": "r_name"
}
}
`
没有合适的资源?快使用搜索试试~ 我知道了~
BeetlSQL数据库访问框架是一个全功能 DAO 工具,同时具有 Hibernate.rar
共954个文件
java:766个
xml:61个
md:45个
需积分: 5 0 下载量 149 浏览量
2023-06-30
22:55:30
上传
评论
收藏 21.31MB RAR 举报
温馨提示
BeetSql是一个全功能DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删改查功能。数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。SQL 模板基于Beetl实现,更容易写和调试,以及扩展。可以针对单个表(或者视图)代码生成pojo类和sql模版,甚至是整个数据库。能减少代码编写工作量。在维护性上,SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。可以自动将sql文件映射为dao接口类。灵活直观的支持支持一对一,一对多,多对多关系映射而不引入复杂的OR Mapping概念和技术。具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能。下面是一个简单的例子~
资源推荐
资源详情
资源评论
收起资源包目录
BeetlSQL数据库访问框架是一个全功能 DAO 工具,同时具有 Hibernate.rar (954个子文件)
md.btl 761B
pojoAttribute.btl 632B
pojoAlias.btl 407B
pojo.btl 286B
mapper.btl 241B
.editorconfig 362B
spring.factories 99B
.gitignore 80B
spring.handlers 97B
说明.htm 4KB
org.springframework.boot.autoconfigure.AutoConfiguration.imports 37B
CassandraJDBC42.jar 14.04MB
db2jcc.jar 7.63MB
gbasedbtjdbc_3.3.0_2.jar 2.39MB
ojdbc6-11.2.0.1.0.jar 2.01MB
kingbase8-8.2.0.jar 790KB
sqljdbc4.jar 571KB
gradle-wrapper.jar 50KB
db2jcc_license_cu.jar 1KB
testsql.jar 682B
BaseSQLExecutor.java 52KB
SQLManager.java 46KB
ConditionalSQLManager.java 28KB
ThreadLocalSQLManager.java 25KB
AbstractDBStyle.java 22KB
BeanProcessor.java 20KB
Query.java 18KB
LambdaQuery.java 17KB
SpringDataBuilder.java 16KB
BeanKit.java 15KB
QueryCondition.java 14KB
SQLManagerBuilder.java 13KB
SchemaMetadataManager.java 12KB
S06SelectSample.java 11KB
MapperMethodParser.java 11KB
S6MoreDatabase.java 10KB
ClassAnnotation.java 10KB
BuilderTest.java 10KB
JavaType.java 10KB
AttrNode.java 9KB
BeetlSqlService.java 8KB
PathLoader.java 8KB
S2MappingSample.java 8KB
ConfigJoinMapper.java 8KB
StringKit.java 8KB
BeetlSqlBeanRegister.java 8KB
SagaManager.java 8KB
DebugInterceptor.java 8KB
Slf4JLogInterceptor.java 8KB
MappingSample.java 7KB
PageQuery.java 7KB
SourceConfig.java 7KB
DbManager.java 7KB
Mapper2Test.java 7KB
S09JsonMappingSample.java 7KB
XMLBeetlSQL.java 7KB
JsonConfigMapper.java 7KB
S1QuickStart.java 7KB
BeetlTemplateEngine.java 7KB
ViewTest.java 6KB
PluginAnnotationSample.java 6KB
DefaultBeanFetch.java 6KB
EnumKit.java 6KB
JMHMain.java 6KB
NumberKit.java 6KB
XMLFileParser.java 6KB
BeetlSqlDao.java 6KB
S04QuerySample.java 6KB
SimpleCacheInterceptor.java 6KB
S01MapperSelectSample.java 6KB
BeetlSqlConfig.java 5KB
FetchOneAction.java 5KB
BaseMapper.java 5KB
StreamResultSetMapper.java 5KB
S07InsertSample.java 5KB
ForceDataSourceTest.java 5KB
CoreUpdate.java 5KB
SqlManagerFactoryBean.java 5KB
StreamTest.java 5KB
QuickXMLTestBeetlSQL.java 5KB
S3PageSample.java 5KB
HiveStyle.java 5KB
ClassDesc.java 5KB
SampleHelper.java 5KB
S02MapperUpdateSample.java 5KB
DataAPI.java 4KB
IotDbStyle.java 4KB
MapperTest.java 4KB
BeetlSqlClassPathScanner.java 4KB
SqlId.java 4KB
InsertValueNode.java 4KB
QueryTest.java 4KB
TrimTag.java 4KB
JFinalBeetlSql.java 4KB
DB2SqlStyle.java 4KB
NoSchemaMetaDataManager.java 4KB
CodeGenController.java 4KB
BaseMapperConfigBuilder.java 4KB
DBStyle.java 4KB
SQLLoaderSample.java 4KB
共 954 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
野生的狒狒
- 粉丝: 1680
- 资源: 1668
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于串口通信的光通信上位机,包括运动控制和通信协议
- 串口与以太网文件传送协议(或自定义控制协议)
- Qt开发windows系统安装教程与代码实例.txt
- QT6实现的附带文件传输协议的串口终端
- 一个串口通讯类和调用Demo 通过设置串口、设置串口自定义协议,可方便对串口发送数据与接收数据
- 华为OD模拟题及参考答案.仅供学习和模拟考试使用
- stm32f103c8t6基于modbus协议和使用串口读取温湿度
- 英雄联盟LOL金克斯4K电脑壁纸
- Microbrain道闸产品上位机,以MahApps库为基础搭建界面,集成了串口(UART)、CAN、WIFI通信,十六进制协议
- Android串口通讯, 支持发送数据回调, 支持并发处理, 自定义协议, CRC校验, 自动粘包, 自动去除冗余的干扰数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功