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

  1. 多表查询 (一对一关联)

  2. 多表查询支持 (多对一)

  3. 多表查询支持 (一对多)

  4. 多表查询支持 Condition 参数

  5. 多表查询支持分页

  6. 多表查询,精确分页

  7. 支持分库分表 

    3.0.0.7

  8. 多表关联支持 update/insert/delete

  9. update @JoinTable, @FK
    update @JoinTable:
    subClass="Student"
    -> subClass=Student.class

    update @FK:
    @FK(refBy="id", value="classno")
    ->
    @FK(mainField="id", subField="classno")

    value -> subField

  10. MoreTable select 支持分库分表 Sharding

  11. MoreTable insert/update/delete 支持分库分表 Sharding

  12. 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 啦, 你还想添加什么功能,请到评论区告诉我们. 

项目首页:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值