用 AI 写代码,但太多代码,检查不过来;那就用 ORM Bee, 代码简单明了,不用写多余代码,轻松 Review!
Bee, 接口简单,功能齐全,支持原生分页;分库分表 (Sharding 分片) ,也支持 MongoDB ORM.
你可以同时使用多种数据库;面向对象和自定义 sql 都全面支持,让你在简单功能可以快速开发,需要高性能时,可以轻松写 sql.
Bee = Hibernate/MyBatis+ plus +Sharding JDBC + Jpa+ Spring data+ GraphQL+ App ORM (Android, 鸿蒙)
小巧玲珑!仅 928K, 还不到 1M, 但却是功能强大!
V3.0.0 (2026・LTS 版)
3.0.0.6
-
多表查询 (一对一关联)
-
多表查询支持 (多对一)
-
多表查询支持 (一对多)
-
多表查询支持 Condition 参数
-
多表查询支持分页
-
多表查询,精确分页
-
支持分库分表
3.0.0.7
-
多表关联支持update/insert/delete
-
update @JoinTable, @FK
update @JoinTable:
subClass="Student"
-> subClass=Student.class
update @FK:
@FK(refBy="id", value="classno")
->
@FK(mainField="id", subField="classno")
value -> subField
-
MoreTable select 支持分库分表 Sharding
-
MoreTable insert/update/delete 支持分库分表 Sharding
-
Ddl 支持 @StringLen, @ColumnType
// ORM Bee 多表关联查询
public class MoreTableSelectList {
public static void main(String[] args) {
MoreTable moreTable = BF.getMoreTable();
Province province = new Province();
List<Province> list1 = moreTable.select(province, 0, 10); //查询前10条记录
if (list1 != null) {
for (int i = 0; i < list1.size(); i++)
Logger.info(JacksonJsonUtil.toJson(list1.get(i)));
}
}
}
class Province {
private Integer id;
private String name;
private Integer level;
private String remark;
@JoinTable(mainField = { "id" }, subField = { "provinceId" }, joinType = JoinType.JOIN)
private List<City> listCity;
@JoinTable(mainField = { "id" }, subField = { "provinceId" }, joinType = JoinType.LEFT_JOIN)
// 要用LEFT_JOIN,不然会影响到下一个关联子表listCity
ProvinceHistory provinceHistory; //省历史表
@JoinTable(mainField = { "id" }, subField = { "fId" }, joinType = JoinType.LEFT_JOIN)
private News news;//新闻表
//省略get,set
}
class City{
private Integer id;
private String name;
private Integer level;
private String remark;
private Integer provinceId;
@JoinTable(mainField = { "id" }, subField = { "cityId" }, joinType = JoinType.JOIN, subClass = Town.class)
private Town town;
//省略get,set
}
class Town {
private Integer id;
private String name;
private Integer level;
private String remark;
private Integer cityId;
@JoinTable(mainField = { "id" }, subField = { "townId" }, joinType = JoinType.JOIN)
private List<Village> listVillage;
//省略get,set
}
多表关联查询,支持分库分表例子:
public class Orders implements Serializable {
private static final long serialVersionUID = 9L;
@JoinTable(mainField="userid", subField="id", joinType=JoinType.LEFT_JOIN, subClass = TestUser.class) //ok //... from orders left join test_user on orders.userid=test_user.username where ...
private TestUser testUser;
private Long id;
private Long userid;
private Long orderid;
private String name;
private BigDecimal total;
private String createtime;
private String remark;
private String sequence;
private String abc;
private String updatetime;
// ... get,set
}
public class TestUser implements Serializable {
private static final long serialVersionUID = 5L;
private Long id;
private String lastName;
private String name;
private String password;
private String username;
private String createtime;
// ... get,set
}
package org.teasoft.exam.moretable3.sharding;
import java.util.List;
import org.teasoft.bee.osql.BeeException;
import org.teasoft.bee.osql.api.MoreTable;
import org.teasoft.bee.sharding.ShardingBean;
import org.teasoft.exam.bee.osql.sharding.InitSameDsUtil;
import org.teasoft.exam.comm.Printer;
import org.teasoft.honey.logging.Logger;
import org.teasoft.honey.osql.shortcut.BF;
import org.teasoft.honey.sharding.config.ShardingConfig;
public class MoreTableShardingSelect {
public static void main(String[] args) {
ShardingConfig.addShardingBean("Orders", new ShardingBean("ds[0..1].orders[0..5]", "userid"));
InitSameDsUtil.initDS(); //设置多个数据源; 设置Sharding模式
test();
}
public static void test() {
try {
MoreTable moreTable = BF.getMoreTable();
Orders orders = new Orders();
Long rfId=33L;
orders.setUserid(rfId);
orders.setOrderid(rfId);
TestUser testUser=new TestUser();
testUser.setId(rfId);
testUser.setUsername("testSharding");
orders.setTestUser(testUser);
List<Orders> list=moreTable.select(orders);
Printer.printList(list);
} catch (BeeException e) {
Logger.error("In MoreTableInsertSharding (BeeException):"+e.getMessage());
}catch (Exception e) {
Logger.error("In MoreTableInsertSharding (Exception):"+e.getMessage());
}
}
}

测试与实例 bee-exam
bee-starter-demo
自动生成 Spring Boot 后端微服务代码,几秒钟即可完成,秒杀 GPT.
下期功能预告:
Bee 已经是一个功能很齐全的 ORM 啦, 你还想添加什么功能,请到评论区告诉我们.
项目首页: