Bee可用于Android、HarmonyOS环境访问SQLite数据库,专门对两套环境作了优化(V1.17)
在Android和Harmony两个环境,可以用同一套Bee代码访问DB
Bee,互联网新时代的Java ORM框架,更快、更简单、更自动,开发速度快,运行快,更智能!
Bee,一个简单,易用,功能强大(编码少、开发速度快,运行快)的 JAVA ORM 框架。
Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;概念简单,10分钟即可入门。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化;具有分布式特性。高级要求,还可以方便自定义SQL语句。运行速度接近直接用JDBC的速度。
如果说Mybatis在Hibernate之后不是重复造轮子,那Bee在Hibernate和Mybatis之后也不会是重复造轮子!
择其优点,避其缺点,此外,还加有自己的优点!
Bee 是一个具有人工智能(AI)特性,省时/优雅、简易、自动( AiTea: Timesaving/Tasteful, Easy, Automatic) 的ORM软件框架(AiTeaSoft)(IT-->AiTea 的思维转变!)。
Bee是一种更接近SQL语言思维的ORM框架,
一种开发速度和开发成本都不比Php,Ruby on Rail差的Java ORM框架,
而且它的编码复杂度是O(1),即用了Bee,无论多少个表,你都可以不用另外再写dao代码;让你可以更专注业务逻辑的开发。
Bee 网址:
https://github.com/automvc/bee
Bee在gitee 的网址:
https://gitee.com/automvc/bee
bee-ext:
https://github.com/automvc/bee-ext
jdk1.7+
Bee概念简单(10分钟即可入门)、功能强大。
Bee 简化了与DB交互的编码工作量.连接,事务都可以由Bee框架负责管理。
简单易用,文件小,性能好;同时支持JDBC(比如JavaWeb),Android和Harmony。
- 1.接口简单,使用方便。Suid接口中对应SQL语言的select,update,insert,delete操作提供4个同名方法。
- 2.使用了Bee,你可以不用再另外编写dao代码,直接调用Bee的api即可完成对DB的操作。
- 3.约定优于配置:Javabean没有注解,也不需要xml映射文件,只是纯的Javabean即可,甚至get,set方法不用也可以。
- 4.智能化自动过滤null和空字符串,不再需要写判断非空的代码。
- 5.支持只查询一部分字段。
Bee可用于Android环境访问SQLite数据库,专门对此作了优化(V1.17)
- 6.动态/任意组合查询条件,不需要提前准备dao接口,有新的查询需求也不用修改或添加接口。
- 7.支持原生SQL排序, 原生语句分页(不需要将全部数据查出来)。
- 8.支持直接返回Json格式查询结果; 链式编程。
- 9.支持事务、多个ORM操作使用同一连接、for update,支持批处理操作,支持原生SQL(自定义sql语句),支持存储过程。
- 10.支持面向对象方式复杂查询、多表查询(无n+1问题; 支持:一对一,一对多,多对一,多对多;返回结果根据子表是否使用List有两种呈现结构)。
- 11.一级缓存,概念简单,功能强大;一级缓存也可以像JVM一样进行细粒度调优;支持可更新的长久缓存列表,更新配置表,不需要重启。天生抵御缓存穿透 。 二级缓存扩展支持;内置Redis二级缓存支持。
- 12.表名与实体名、字段名与属性名映射默认提供多种实现,且支持自定义映射规则扩展。
- 13.多种DB支持轻松扩展(MySQL,MariaDB,Oracle,H2,SQLite,PostgreSQL,SQL Server,Cassandra等直接可用),理论上支持JDBC的DB都可以支持。
- 14.支持读写分离一主多从, 仅分库等多数据源模式(对以前的代码无需修改,该功能对代码是透明的,即无需额外编码);Jndi数据源支持。
- 15.支持同时使用多种数据库(如同时使用Mysql,Oracle,SQL Server)。
- 16.提供自然简单的分布式主键生成方案:分布式环境下生成连续单调递增(在一个workerid内),全局唯一数字id。
- 17.支持同库分表,动态表名映射。
- 18.拦截器、多租户,支持自定义TypeHandler,处理查询的ResultSet结果。
- 19.Suid,SuidRich,PreparedSql,MapSuid,MoreTable支持设置数据源名称。
- 20.可以不用表对应的Javabean也能操作DB。
- 21.无第三方插件依赖;可零配置使用。
- 22.性能好:接近JDBC的速度;文件小:Bee V1.8 仅217k, V1.9.5 仅315k,V1.9.8 仅310k。
辅助功能: - 23.支持自动生成表对应的Javabean,根据Javabean创建表,Javaweb后端代码根据模板自动生成;能打印非占位符的可执行sql,方便调试;支持生成Json格式的SQL脚本。
- 24.支持读取Excel,从Excel导入数据到DB,操作简单;支持从Excel获取配置生成数据库表。
- 25.流的工具类StreamUtil。
- 26.复杂查询前后端可自动解析。
- 27.注解支持:PrimaryKey,Datetime,Createtime,Updatetime;JustFetch,ReplaceInto(MySQL)。
- 28.可扩展注解:多租户,敏感信息模糊处理,自动设置字段值,Dict字典转化,DictI18n多语言国际化字典转化,Column列名与属性名映射。
- 29.使用实体名_F引用实体字段名。
V1.17
V1.17.0.7
1)支持HarmonyOS(鸿蒙)直接使用Bee访问SQLite数据库;
2)在Harmony和Android两个环境,可以用同一套Bee代码访问DB,提高代码重用,节省人力物力!
3)支持HarmonyOS日志:ohos.hiviewdfx.HiLog
V1.17.0.6
1)支持Android(安卓)系统直接使用Bee访问SQLite数据库;Bee增加Android ORM功能.
2)支持Android日志:android.util.Log
3)Ddl: 优化创建表流程
4)多数据源环境下,增加日志提示当前使用的是哪个数据源名称
5)分页查询,当获取一页的数据量size为0时,直接返回emptyList
V1.17.0.5
1)SqlServer支持start,size两个参数分页
2)事务注解Tran
V1.11 (International Labour Day)
1)拦截器、多租户
2)增加ShardingStruct为分库分表作准备
3)二级缓存扩展支持
Redis缓存支持
4)支持自定义TypeHandler,处理查询的ResultSet结果
添加转换器SetParaTypeConvert转换PreparedStatement参数的类型
5)支持在Suid等对象设置命名转换器.
增加DbFeature方言注册器,自定义实现不同DB方言更加易用.
6)支持Cassandra.
7)添加Jndi数据源支持
8)Ddl.java使用Javabean创建表,支持追加java与db字段类型映射,支持设置某个DB的java_dbtype类型映射.
9)PreparedSql自定义sql支持批量插入.
PreparedSql自定义sql支持多表查询,返回多表关联Javabean结构数据
10)自定义动态SQL标签,@in,@toIsNULL1,@toIsNULL2,,.
动态sql,将list转为像in (1,2,3)的语句,不需要foreach,批量插入也不需要foreach.
11)注册器:
CalculateRegistry,计算分片算法注册器
DbFeatureRegistry,DB方言特性注册器
InterceptorChainRegistry,拦截器链注册器
NameRegistry,命名转换注册器
SetParaTypeConverterRegistry, PreparedStatement参数类型转换注册器
TypeHandlerRegistry 查询结果转换处理注册器
12)配置文件支持多环境差异化配置.
添加注解:
PrimaryKey,Datetime,Createtime,Updatetime;JustFetch
AnnotationHandler,AutoSetString自动设置字符值
Desensitize,敏感信息模糊处理
ReplaceInto,MySQL replace into转换
MultiTenancy多租户
BeforeReturnAnnotationHandler,AbstractDictI18nDefaultHandler
Dict字典转化
DictI18n多语言国际化字典转化
Column列名与属性名映射扩展支持
增强:
multi-DS同时使用不同类型DB优化
(比如,同时使用Mysql,Oracle,SQL Server)
可用BF代替BeeFactoryHelper加快输入
Javabean使用java.util.Date类型,进行SUID作兼容处理.
Ddl.java兼容原生char类型,兼容java.util.Date.
SQLite获取Timestamp结果作转化处理.
实体属性是Javabean与DB表Json类型字段在参数设置与查询结果时自动转换(使用Json注解自定义实现).
读写模式配置信息去除空格
检测MapSqlKey的值
增加Registry空接口;增加NameRegistry.
更改Serializer接口抛出异常方式.
MapSuid,MapSql支持解析字符串的Boolean类型.
GenBean,还不支持的jdbc类型,提醒在哪个文件设置.
GenBean增加支持是否覆盖原有文件设置.
GenBean增加获取字段支持,使用字段名可以不直接使用字符串.
SuidRich的selectString方法支持可变参数:
public List<String[]> selectString(T entity,String... selectFields);
CommInterceptorChain增加检测是否添加了相同类型拦截器.
提高缓存安全.
添加SPI预加载接口PreLoad.
添加用于全局的拦截器注册器InterceptorChainRegistry.
SuidRich,public int update(T oldEntity, T newEntity)拦截器只处理新实体newEntity.
fixed bug:
naming transfer
多表查询同一个实体自我关联查询禁止自我多次循环
测试环境: 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文件.
<dependency>
<groupId>org.teasoft</groupId>
<artifactId>bee</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>org.teasoft</groupId>
<artifactId>honey</artifactId>
<version>1.11</version>
</dependency>
<!--for log framework,Excel(poi) -->
<dependency>
<groupId>org.teasoft</groupId>
<artifactId>bee-ext</artifactId>
<version>1.11</version>
</dependency>
举例如下:
创建一个数据库,默认名称为bee.
可以用init-data(user-orders)-mysql.sql脚本创建表和插入初始化数据.
注:如果还没有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 =
import java.math.BigDecimal;
import java.util.List;
import org.teasoft.bee.osql.Suid;
import org.teasoft.honey.osql.core.BeeFactoryHelper;
/**
* 查,改,增,删 Suid (select,update,insert,delete)实例
* @author Kingstar
* @since 1.0
*/
public class SuidExam {
public static void main(String[] args) {
Suid suid=BeeFactoryHelper.getSuid();
//需要先生成相应的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());
}
//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等都支持,这里只是一个入门例子.
//更加应用参考,请查看: 更多例子 和 综合应用 .
bee.db.isAndroid=true
bee.db.androidDbName=account.db
bee.db.androidDbVersion=1
bee.osql.loggerType=androidLog
#开启查询结果字段类型转换,将支持更多类型
bee.osql.openFieldTypeHandler=true
#如果允许删除和更新整张表,需要去掉注释
#bee.osql.notDeleteWholeRecords=false
#bee.osql.notUpdateWholeRecords=false
public class YourAppCreateAndUpgrade implements CreateAndUpgrade{
@Override
public void onCreate() {
// 可以使用面向对象方式创建表
Ddl.createTable(new Orders(), false);
Ddl.createTable(new TestUser(), false);
}
@Override
public void onUpgrade(int oldVersion, int newVersion) {
if(newVersion==2) {
Ddl.createTable(new LeafAlloc(), true);
Log.i("onUpgrade", "你在没有卸载的情况下,在线更新到版本:"+newVersion);
}
}
}
并在AndroidManifest.xml,配置android:name为BeeApplication
package com.aiteasoft.util;
import org.teasoft.bee.android.CreateAndUpgradeRegistry;
import org.teasoft.beex.android.ApplicationRegistry;
public class BeeApplication extends Application {
private static Context context;
@Override
public void onCreate() {
ApplicationRegistry.register(this);//注册上下文
CreateAndUpgradeRegistry.register(YourAppCreateAndUpgrade.class);
}
}
// 并在AndroidManifest.xml,配置android:name为BeeApplication
<application
android:icon="@drawable/appicon"
android:label="@string/app_name"
android:name="com.aiteasoft.util.BeeApplication"
>
Suid suid=BF.getSuid();
List<Orders> list = suid.select(new Orders());
操作1万条数据 ,使用时间对比如下.
操作1w条数据 (单位: ms) |
|||
insert | query | delete | |
greenDao | 104666 | 600 | 47 |
Bee | 747 | 184 | 25 |
Java快速编程, 让Java的开发速度超过php和Rails。
更快的开发Java Web的新组合:
Bee+Spring+SpringMVC
包括仅分库多数据源实例
Bee+Spring+SpringMVC开发学校教务管理与分数管理系统
更快的开发Spring Cloud微服务的新组合:
Bee + Spring Boot
- 1.一键生成整个工程
- 2.自动生成增删改查等常用功能
- 3.生成的工程可以直接运行,不再是只能看不能跑的demo
- 4.快速响应变化,与客户边聊边改,立即可以看到更改后的效果
- 5.基础功能无需人工测试、接口联调,简化整个开发流程
- 6.设计的软件易维护、易扩展,利于二次开发、增加新功能!
- 7.既可以节约开发成本,也可以提高开发效率!
......
API-V1.9.8 下载代码含有 bee-1.9.8-javadoc.zip
API-V1.11(最新版) 下载代码含有 bee-1.11中文和英文版API,bee-1.11中文版源码
为了给大家提供更多更强大的功能,Bee团队与企业合作,推出企业版本.
我们希望提供更多简单易用的Bee功能!进一步提高开发效率!
- 1.降低金融计算型项目开发难度,简化金融数字计算等
- 2.@AutoSetString注解易用性改进,轻松处理像CreateBy,UpdateBy等自动填充功能
- 自动插入租户的值
- 3.@Desensitize,敏感信息模糊处理
- 4.@Dict具体字段字典数值转化
- 5.@DictI18n多语言国际化字典转化,全局统一设置,无需逐个设置,省时省力
- 6.@MultiTenancy多租户
- 7.@Column实现Javabean属性与表列名不一致时,定义映射关系(新系统不建议使用,主要是为了兼容旧系统)
- 8.@Json实体属性是Javabean与DB表Json类型字段在参数设置与查询结果时自动转换
支持List结构实体Json解析(V1.11.0.5.6) - 9.支持EDI XML电子报文自动生成
- 10.Sql Server支持start,size两个参数分页(V1.11.0.5.8)
企业用户:
¥999
个人用户:
¥198
购买后永久使用,免费获取升级
五一期间(5.1-5.4) 5折
六一之前6折
七一之前7折
八一之前8折
国庆之前9折
企业版使用,专业技术支持,解决方案咨询,由以下单位提供:
深圳彩凤软件
(有意愿加入的企业,请联系我们!)
作者的电子邮箱email: honeysoft@126.com
为了我们能够相互了解,更好的为你服务,你可以到以下地址登录使用情况.
automvc/bee#43
https://gitee.com/automvc/bee/issues/I3PIUJ
完成登记的伙伴,请加QQ群(992650213),可找群主领资料!