ORM Bee 3.0.0.7 多表关联支持分库分表 Sharding

发布于

用 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

```java
// 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; //新闻表
}

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;
}

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;
}
```

多表关联查询,支持分库分表例子:

```java
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;
}

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;
}
```

```java
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());
}
}
}
```

![alt](http://pic.zhso.org/2026/07/22/910ed5874f1a.png)

[测试与实例 bee-exam](https://gitee.com/automvc/bee-exam)

- [https://gitee.com/automvc/bee-exam](https://gitee.com/automvc/bee-exam)

**bee-starter-demo**

- [https://gitee.com/automvc/bee-starter-demo](https://gitee.com/automvc/bee-starter-demo)

**自动生成 Spring Boot 后端微服务代码,几秒钟即可完成,秒杀 GPT.**

- [https://gitee.com/automvc/gencode](https://gitee.com/automvc/gencode)

**下期功能预告:**

**Bee 已经是一个功能很齐全的 ORM 啦,** 你还想添加什么功能,请到评论区告诉我们.

项目首页:
- [https://gitee.com/automvc/bee](https://gitee.com/automvc/bee)
- [https://github.com/automvc/bee](https://github.com/automvc/bee)
- [https://gitee.com/automvc/bee-springboot](https://gitee.com/automvc/bee-springboot)

---

原文链接:[点击查看](https://www.oschina.net/news/475450)

评论

暂无评论。