https://github.com/xbyter/mybatis-plus-relation
无需写SQL就可以实现关联子查询(支持嵌套, 每个关联查询只查询一次), 类似Laravel的with方法.
https://github.com/xbyter/mybatis-plus-relation
java mybatis-plus mybatis-plus-orm mybatis-plus-relation mybatis-plus-with
Last synced: 10 months ago
JSON representation
无需写SQL就可以实现关联子查询(支持嵌套, 每个关联查询只查询一次), 类似Laravel的with方法.
- Host: GitHub
- URL: https://github.com/xbyter/mybatis-plus-relation
- Owner: xbyter
- License: mit
- Created: 2025-08-08T09:29:44.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-08T09:56:59.000Z (11 months ago)
- Last Synced: 2025-08-08T11:44:21.441Z (11 months ago)
- Topics: java, mybatis-plus, mybatis-plus-orm, mybatis-plus-relation, mybatis-plus-with
- Language: Java
- Homepage:
- Size: 3.91 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mybatis-plus-relation
无需写SQL就可以实现关联子查询(支持嵌套, 每个关联查询只查询一次), 类似Laravel的with方法.
## 使用示例
```java
//OrderComposite继承OrderEntity并扩展其关联属性. 查询的时候最好也建个OrderCompositeMapper, 其他Composite一样
OrderComposite orderComposite = new OrderComposite();
orderComposite.setOrderId(2023029L);
OrderComposite orderComposite2 = new OrderComposite();
orderComposite2.setOrderId(2022919L);
OrderComposite orderComposite3 = new OrderComposite();
orderComposite3.setOrderId(2023053L);
List orderComposites = Arrays.asList(orderComposite, orderComposite2, orderComposite3);
HasOne orderAddressRelation = new HasOne<>(
OrderComposite::setOrderAddress,
orderAddressMapper,
OrderComposite::getOrderId,
OrderAddressEntity::getOrderId);
HasMany orderProductsRelation = new HasMany<>(
OrderComposite::setOrderProducts,
orderProductCompositeMapper,
OrderComposite::getOrderId,
OrderProductComposite::getOrderId);
//也可以扩展查询条件
orderProductsRelation.setQueryWrapperConsumer(
queryWrapper -> queryWrapper.like(OrderProductComposite::getProductName, "查询值")
);
//关联orderProducts的子表
orderProductsRelation.addRelation(
new HasMany<>(
OrderProductComposite::setOrderProductDiscounts,
orderProductDiscountMapper,
OrderProductComposite::getOrderProductId,
OrderProductDiscountEntity::getOrderProductId
)
);
RelationManager relationManager = new RelationManager<>();
relationManager.addRelation(orderAddressRelation);
relationManager.addRelation(orderProductsRelation);
relationManager.fillCompositeData(orderComposites);
```
## 使用建议
示例里面如果要多次使用关联查询的话就要重复多次建立关联关系, 建议把关联关系放在Mapper里, 比如
```java
public interface OrderCompositeMapper extend BaseMapper {
default HasMany withOrderProducts() {
return new HasMany<>(
OrderComposite::setOrderProducts,
SpringContextUtils.getBean(OrderProductCompositeMapper.class),
OrderComposite::getOrderId,
OrderProductComposite::getOrderId);
}
}
//使用示例
RelationManager relationManager = new RelationManager<>();
relationManager.addRelation(orderCompositeMapper.withOrderProducts());
relationManager.fillCompositeData(orderComposites);
```