Thanks to visit codestin.com
Credit goes to github.com

Skip to content
forked from automvc/bee

Bee is an AI, easy and high efficiency ORM framework. Bee 是开发速度快、简单、自动高效且具有人工智能(AI)特性的Java ORM框架!

License

Notifications You must be signed in to change notification settings

javalibrary/bee

 
 

Repository files navigation

Bee

Easy for Stronger.
Bee is an ORM framework.
Bee is an easy and high efficiency ORM framework.
Coding Complexity is O(1),it means that Bee will do the Dao for you.
You don't need to write the Dao by yourself anymore.
Good Feature: AI, Timesaving/Tasteful, Easy, Automatic (AiTeaSoft Style)
Bee see:
https://github.com/automvc/bee
Honey see:
https://github.com/automvc/honey

点击链接可查看中文介绍

Requirement

jdk1.7+

Feature & Function:

Support many Database(MySQL,MariaDB,Oracle,H2,SQLite,PostgreSQL and so on) and easy extend。

V1.0
Single entity(table) Suid (select,update,insert,delete) object-oriented operation.
Automatically generate the Javabean via DB table or view.
Convention-over-configuration:Javabean no annotation,no xml.
Automatically mapping the table column and the Javabean field.
Javabean support the raw type:int,double,and so on.
PreparedStatement support.
Procedure support.
Native SQL support.
Batch operate support.
Transaction support.
Automatic filter the null and empty field for default.
MAX,MIN,SUM,AVG,COUNT support.
Order by,Paging.
Select some field.
Dynamic & random combination of query conditions,no need to prepare the interface in advance; new query requirements, no need to change the query interface.
All Suid(select,update,insert,delete) operation use the same Bee interface,no longer need any new dao interface.
Users/Developer only need to pay attention to the Bee interface.

......

V1.8
Add Distributed Feature:
1.Add multi-DataSource support(Write/Read, only Split Database).
add multi-DataSource no need change the Java code.
add the route interface of multi-Datasource.
add multi-DataSource route.
add multi-DataSource config.
support refresh multi-DataSource config information.
2.Generate global unique id number in distributed environment.
3.Generate Serial Unique id number in one workid of distributed environment.
Independent clock,workerid can config and easily expand.
Implement algorithms:SerialUniqueId,OneTimeSnowflakeId,PearFlowerId.
Support GenId Factory,and can config the id generator.
4.Gen Serial Unique Id for all Table's Long Id field as primary key.
Enhance Function:
5.The same database sub table support, dynamic table name mapping support.
Entity and any table name mapping support.
Suid add one method: public Suid setDynamicParameter(String para,String value);
add 2 annotation:@Table,@Entity.
6.Use 'for update' lock some select record(s).
public Condition forUpdate()
7.Added support for advanced update set,
Complex query and multi table query support only project some fields.
Add 5 methods in Condition
8.Support show type of data in sql and show ExecutableSql:
bee.osql.showSQL.showType=false
bee.osql.showSQL.showExecutableSql=false
9.Add one method in SuidRich
Add three methods in PreparedSql
10.Oracle DATE column mapping to Timestamp,fix the problem:miss the hour,minute,second in Oracle DATE column.
11.GenFiles support upper case first letter,eg: #{entityName?up1}.
Fix bug:
12.fixed cache bug:genkey;clear cache for batch insert.
fixed bug:parse the json has extra comma. fixed null bug about:PreparedSql's method select(String sql,Object preValues[]).

v1.8.15(2020-10-01 3Festivals)
1.Enhance support for H2,SQLite,PostgreSQL.
2.Enhance page funtion,paging para also use placeholder.
3.Can be used in zero configuration.
4.Enhance PearFlowerId algorithm that it will produce even number with continuous mantissa of 0 when is often not used (there are no such defect in SerialUniqueId and OneTimeSnowflakeId).
5.Enhance Log function.
6.Fixed json transform bug.

click for: Function Detail

ORM Compare

ORM-Compare (More Detail)

Test Evn : Local windows.
DB: MySQL (Version 5.6.24).
Test point: Batch Insert;Paging Select; Transaction(update and select).

Batch Insert(unit: 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

 

Paging Select(unit: 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

 

Transaction(update and select) (unit: 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 need files
orm\compare\bee\service\BeeOrdersService.java

MyBatis need files
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

common,Javabean and Service interface:
Orders.java
OrdersService.java

Quick Start:

1. Add Bee

1.1 if it is a maven project,add the following dependency

		<dependency>
			<groupId>org.teasoft</groupId>
			<artifactId>bee</artifactId>
			<version>1.8.15</version>
		</dependency>
		<dependency>
			<groupId>org.teasoft</groupId>
			<artifactId>honey</artifactId>
			<version>1.8.15</version>
		</dependency>
		<!--for log framework,web sql -->
		<dependency>
			<groupId>org.teasoft</groupId>
			<artifactId>bee-ext</artifactId>
			<version>1.8.15</version>
		</dependency>

1.2 Of course, can download the jar file directly

2. Create the database and the table

eg:
Create one database,default name is bee.
Create the tables and init the data by run the init-data(user-orders)-mysql.sql file(it is mysql sql script).

3. Update the database configuration in bee.properties if need

If no the bee.properties file, you can create it by yourself.

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

4. The Javabean Orders reference as below:

Orders(Javabean)
Auto Genernate Javabean

5. Run the following java code

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

import org.teasoft.bee.osql.Suid;
import org.teasoft.honey.osql.core.BeeFactory;

/**
 * @author Kingstar
 * @since  1.0
 */
public class SuidExam {
	
	public static void main(String[] args) {

		Suid suid=BeeFactory.getHoneyFactory().getSuid();
		
		//需要先生成相应的Javabean
		Orders orders1=new Orders(); //need define the Javabean
		orders1.setId(100001L);
		orders1.setName("Bee(ORM Framework)");
		
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件
		List<Orders> list1 =suid.select(orders1);  //select
		for (int i = 0; i < list1.size(); i++) {
			System.out.println(list1.get(i).toString());
		}
		
		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
		
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动插入数据库中. 
		//方便结合DB插值,如id自动增长,由DB插入;createtime由DB默认插入
		int insertNum=suid.insert(orders2); //insert
		System.out.println("insert record:"+insertNum);
		
		//默认不处理null和空字符串.不用再写一堆的判断;其它有值的字段全部自动作为过滤条件
//		int deleteNum=suid.delete(orders2);   //delete
//		System.out.println("delete record:"+deleteNum);
		
		List<Orders> list2 =suid.select(orders1); //select  confirm the data
		for (int i = 0; i < list2.size(); i++) {
			System.out.println(list2.get(i).toString());
		}
	}

}
//注意: 事务,分页,排序,范围查询,查询结果直接返回json等都支持,这里只是一个入门例子.

Rapid application development:

Let Java more quicker programming than php and Rails.

Faster development of new combinations of Java Web:
Bee+Spring+SpringMVC

Faster development of new combinations of Spring Cloud microservices:
Bee + Spring Boot

...

Contact & Welcome:

Author's email: [email protected]

If you have any problem on bee, please let me know kindly! Thank you, so much!

ORM QQ Group: 992650213 WeChat:AiTeaSoft

At the same time, welcome you to join Bee team create a better future.

About

Bee is an AI, easy and high efficiency ORM framework. Bee 是开发速度快、简单、自动高效且具有人工智能(AI)特性的Java ORM框架!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%