Skip to content

Latest commit

 

History

History
527 lines (433 loc) · 18.2 KB

README_CN.md

File metadata and controls

527 lines (433 loc) · 18.2 KB

Bee

好消息:

Bee 2.1 完善的Sharding分片功能, 完善的MongoDB ORM功能。
当前最新版本为:V2.4.0 LTS版
1.7.x LTS版为:1.17.21

Sharding分片:对业务开发透明,编码透明,只加少量分片配置即可实现分片功能.

工欲善其事必先利其器!——《论语》

为适应互联网时代软件需求量大,需求变更频繁,性能要求高等要求,ORM Bee应运而生!

Bee,一个简单,易用,功能强大(编码少、开发速度快,运行快)的 JAVA ORM 框架。
Bee,互联网新时代的Java ORM框架,更快、更简单、更自动,开发速度快,运行快,更智能!
Bee简单易用概念简单,10分钟即可入门。
Bee功能强大:运行速度比其它流行ORM工具更快。
Bee功能丰富:支持JDBC/关系型数据库; 支持手机环境ORM:Android和Harmony;支持NoSQL的Cassandra,Mongodb等;支持Sharding分片;支持ElasticSearch查询。

如果说Mybatis在Hibernate之后不是重复造轮子,那Bee在Hibernate和Mybatis之后也不会是重复造轮子!
择其优点,避其缺点,此外,还加有自己的优点!

磨刀不误砍柴工! Bee连磨刀的时间都帮你省了。

IT->AiTea

环境要求

Bee jdk1.8+

Bee2.1.8 + Spring boot3.0.8对应版本2.1.8.boot3.0.8 需要JDK17
Bee2.2 + Spring boot3.0.13对应版本2.2.boot3.0.13 需要JDK17

Bee主要功能特点介绍:

主要功能介绍

最新功能简介:

V2.5.0(2025.新年·LTS版)

  1. MongoDB update,delete,deleteById支持分片
  2. MongoDB modify 分片cache增强
  3. MongoDB index support for sharding
  4. add FullOpTemplate

V2.4.2(2024.冬至·LTS版)

  1. GenFiles增加genFileViaStream,支持读取jar里的配置文件
  2. Genbean:更新方法genFieldFile,toString, 添加方法setUpperFieldNameInFieldFile用于指定变量大小写风格
  3. 更新DoNotSetTabShadngValue提示信息(分片插入需要设置分片键的值)
  4. SuidRich selectById,deleteById支持sharding
  5. Condition支持clone
  6. fixed bug:
    sharding select all(no paging)
    sharding modify cache

V2.4.0(2024.国庆·LTS版)

1.chaing SQL编程支持占位符预编译,防止注入攻击;增加update,delete的chaing编程支持
2.没有指定表名则不放缓存
3.添加Calculate默认日期分片实现,添加自定义分片实现样例
4.支持ElasticSearch(7.x) ORM 查询
5.自定义sql(PreparedSql)增加关联表名的方法,让自定义sql中,方法没带实体T的,也能纳入缓存管理
6.MongoDB根据表生成Javabean,支持生成默认注解

7.Sharding模板方法类使用finally处理上下文回收
8.MapSql(MapSuid)支持使用Condition实现更加复杂的where条件,updateSet设值
MapSql增加方法: public void where(Condition condition);
public void updateSet(Condition condition);
9.添加ConditionExt支持使用entity::getName形式引用属性名
ConditionExt帮助Condition可以不用写死字段名
10.添加链式编程工厂引用类ChainSqlFactory及帮助类ChainSqlFactoryHelper/CSF

11.添加查询结果自定义组装器ResultAssembler
12.MoreTable添加方法:selectWithFun,count
13.MoreTable添加方法List<String[]> selectString(T entity, Condition condition)
14.MoreTable多表关联update方法增强

15.支持property风格sharding config
16.MoreTable多表查询支持selectJson
17.GenBean支持java.time.LocalDateTime类型
18.fixed bug: GenConfig baseDir属性默认值支持Linux环境
19.Suid支持java.time.LocalDateTime类型
20.添加注解TO_DATE用于Oracle在where条件中过滤记录

21.fixed bug: MoreTable单条插入,自动设置值要先于doBeforePasreEntity
InsertAndReturnId in sharding mode need setInitIdByAuto > doBeforePasreEntity
InsertAndReturnId 传入的pkName要转成column name.
22.enhance: 多表插入时,没有子表,则主表插入使用insert
文件生成添加备份已有文件功能
TranHandler往上层抛出接到的异常
23.pgsql支持json/jsonb,但在where部分还需要写pgsql的特殊sql
24.完善分片功能

点击链接可查看 详细完整功能介绍

Bee支持的数据库

1.MySQL
2.Oracle
3.SQL Server
4.MariaDB
5.H2
6.SQLite
7.PostgreSQL
8.MS Access
9.金仓
10.达梦
11.OceanBase
12.Cubrid,HSQL,Derby,Firebird
13.其它支持JDBC的DB

NOSQL:
14.Mongodb
15.ElasticSearch
16.Cassandra

手机环境(的数据库):
17.Android
18.Harmony

ORM比较

应用于JDBC方面的比较

ORM-Compare (More Detail)

测试环境: Windows.
数据库: MySQL (Version 5.6.24).
测试点: 批量插入;分页查询;事务(update and select).

批量插入(单位: ms)
  5k 1w 2w 5w 10w
Bee 529.00 458.33 550.00 1315.67 4056.67
MyBatis 1193 713 1292.67 1824.33 Exception

 

分页查询(单位: ms)
  20次 50次 100次 200次 500次
Bee 17.33 58.67 52.33 38.33 57.33
MyBatis 314.33 446.00 1546.00 2294.33 6216.67

 

事务(update and select) (单位: ms)
  20次 50次 100次 200次 500次
Bee 1089.00 70.00 84.00 161.33 31509.33
MyBatis 1144 35 79.67 146.00 32155.33

Bee需要的文件
orm\compare\bee\service\BeeOrdersService.java

Mybatis需要的文件(对一个表的操作,就会比Bee多三个dao相关文件)
orm\compare\mybatis\service\MybatisOrdersService.java orm\compare\mybatis\dao\OrdersDao.java orm\compare\mybatis\dao\OrdersMapper.java orm\compare\mybatis\dao\impl\OrdersDaoImpl.java

公共都需要的有,Javabean和Service接口:
Orders.java
OrdersService.java

用Bee无需用户再写Dao代码,一个表少三个Dao文件,100个表就少300个Dao文件.

Bee应用于APP方面的比较

Bee应用于APP开发性能对比数据
操作1万条数据 ,使用时间对比如下.

操作1w条数据 (单位: ms)
  insert query delete
greenDao(Android) 104666 600 47
Bee(Android 8.1) 747 184 25
Bee(HarmonyOS P40 Pro模拟器) 339 143 2

快速开始:

1. 引入Bee

1.1 maven工程,添加如下依赖

       <dependency>
	      <groupId>org.teasoft</groupId>
	      <artifactId>bee-all</artifactId>
	      <version>2.4.0</version>
        </dependency>
		
	    <!-- Mysql config.You need change it to the real database config. -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.47</version>
			<scope>runtime</scope>
		</dependency>

Gradle

implementation group: 'org.teasoft', name: 'bee-all', version: '2.4.0'
//Gradle(Short)
implementation 'org.teasoft:bee-all:2.4.0'

1.2 也可以直接下载jar文件

2. 创建数据库和表

举例如下:
创建一个数据库,默认名称为bee.
可以用init-data(user-orders)-mysql.sql脚本创建表和插入初始化数据.

3. 更新数据库的配置信息(在bee.properties)

注:如果还没有bee.properties文件,可以自己新建一个.
(默认的bee.properties位于Hoeny工程下,对应HoneyConfig.java,列举了Bee所有会用到的配置)
也可以配置数据源(此处只是一个例子).

#bee.databaseName=MySQL
bee.db.dbName=MySQL
bee.db.driverName = com.mysql.jdbc.Driver
#bee.db.url =jdbc:mysql://localhost:3306/bee?characterEncoding=UTF-8
bee.db.url =jdbc:mysql://127.0.0.1:3306/bee?characterEncoding=UTF-8&useSSL=false
bee.db.username = root
bee.db.password =

#输出日志
bee.osql.showSQL=true
bee.osql.showSql.showType=true
bee.osql.showSql.showExecutableSql=true
# since 2.1.7 =true时,可格式化sql bee.osql.showSql.sqlFormat=false

#log4j>slf4j>log4j2>androidLog>harmonyLog>systemLogger>fileLogger>noLogging>jdkLog>commonsLog
#fileLogger 输出到文件; systemLogger 控制台输出
bee.osql.loggerType=systemLogger

4. 生成Javabean Orders可参考:

Orders(Javabean)
自动生成Javabean

5. 运行下面的 java代码

关键代码

List<Orders> list1 =suid.select(orders1);  //select
int updateNum=suid.update(orders1);   //update
int insertNum=suid.insert(orders2); //insert 
int deleteNum=suid.delete(orders2);   //delete

详细实例

		
import java.math.BigDecimal;
import java.util.List;

import org.teasoft.bee.osql.api.Suid;
import org.teasoft.honey.osql.core.BeeFactoryHelper;

/**
 * 查,改,增,删 Suid (select,update,insert,delete)实例
 * @author Kingstar
 * @since  2.1
 */
public class SuidExam {
	
	public static void main(String[] args) {

		Suid suid=BeeFactoryHelper.getSuid();
//	    Suid suid=BF.getSuid();//从1.9.8开始,可以加快输入
		
		//需要先生成相应的Javabean
		Orders orders1=new Orders();
		orders1.setId(100001L);
		orders1.setName("Bee(ORM Framework)");
		
		//1:select查询实例
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件
		List<Orders> list1 =suid.select(orders1);  //select
		for (int i = 0; i < list1.size(); i++) {
			System.out.println(list1.get(i).toString());
		}
		
		//在实体里,默认的运行符是等号,除了等号,Bee是用比较符合书写习惯的方法, 可以任意写不同的条件.
          //Condition condition=BF.getCondition();   //SuidRich接口有很多带Condition参数的方法
          //condition.op(Orders_F.userid, Op.ge, 0);   //userid>=0
          //Op支持除了"="外的,>,<,>=,<=,!=, like, in, not in 等
		
		//2:update更新实例
		orders1.setName("Bee--ORM Framework");
		//默认只更新需要更新的字段. 过滤条件默认只用id字段,其它需求可用SuidRich中的方法.
		int updateNum=suid.update(orders1);   //update
		System.out.println("update record:"+updateNum);
		
		
		Orders orders2=new Orders();
		orders2.setUserid("bee");
		orders2.setName("Bee(ORM Framework)");
		orders2.setTotal(new BigDecimal(91.99));
		orders2.setRemark("");  //empty String test
		
		//3:insert 插入实例
		int insertNum=suid.insert(orders2); //insert  		
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动插入数据库中. 
		//方便结合DB插值,如id自动增长,由DB插入;createtime由DB默认插入
		System.out.println("insert record:"+insertNum);
		
		//4:delete 删除实例
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件
		//int deleteNum=suid.delete(orders2);   //delete
		//System.out.println("delete record:"+deleteNum);
		
	}
}
//注意: 事务,分页,排序,范围查询,查询结果直接返回json等都支持,这里只是一个入门例子.
//更加应用参考,请查看: 更多例子   和    综合应用 .

6.操作视频:


2.2.boot3.0.13需要JDK17

Bee架构介绍

V2.1

Bee常用接口介绍

综合应用:

Java快速编程, 让Java的开发速度超过php和Rails。

更快的开发Java Web的新组合:
Bee+Spring+SpringMVC
包括仅分库多数据源实例

Bee+Spring+SpringMVC开发学校教务管理与分数管理系统

更快的开发Spring Cloud微服务的新组合:
Bee + Spring Boot

HarmonyOS使用Bee开发App实例:
Bee + HarmonyOS

自动生成代码GenCode
Generate code automatically

快码加编

快码加编——代码生成神器

  • 1.一键生成整个工程(无需再搭建系统框架)
  • 2.自动生成增删改查等常用功能
  • 3.生成的工程可以直接运行,不再是只能看不能跑的demo
  • 4.快速响应变化,与客户边聊边改,立即可以看到更改后的效果
  • 5.基础功能无需人工测试、接口联调,简化整个开发流程
  • 6.设计的软件易维护、易扩展,利于二次开发、增加新功能!
  • 7.既可以节约开发成本,也可以提高开发效率
    ......

点击链接可查看(资料) FAQ常见问题

其它学习资料:

API-DOC

API-V1.17 下载代码含有 bee-1.17中文和英文版API,bee-1.17中文版源码
API-V2.1(最新版) 下载代码含有 bee-2.1英文版API

使用文档

wiki 文档

Bee常用大全

CSDN: ORM Bee资料大全

Bee 网址:
https://github.com/automvc/bee
Bee在gitee 的网址:
https://gitee.com/automvc/bee
bee-ext:
https://github.com/automvc/bee-ext

联系与欢迎:

作者的电子邮箱email: honeysoft@126.com

如有任何相关建议,欢迎给作者发邮件,不胜感激!

更多设计思想,请关注微信公众号: 软件设计活跃区

为了我们能够相互了解,更好的为你服务,你可以到以下地址登录使用情况. #43
https://gitee.com/automvc/bee/issues/I3PIUJ
完成登记的伙伴,请加QQ群(992650213),可找群主领企业级生产环境建议相关资料!

为了能及时解答大家的疑问,可以加入Bee的技术QQ群:992650213

同时,也欢迎你加入到Bee框架的开发之中,相信有你的加入,Bee会更加美好!