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

[测试与实例 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)
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());
}
}
}
```

[测试与实例 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)
评论
暂无评论。