{"id":30364738,"url":"https://github.com/xbyter/mybatis-plus-relation","last_synced_at":"2025-08-19T20:19:36.350Z","repository":{"id":308867181,"uuid":"1034371623","full_name":"xbyter/mybatis-plus-relation","owner":"xbyter","description":"无需写SQL就可以实现关联子查询(支持嵌套, 每个关联查询只查询一次), 类似Laravel的with方法.","archived":false,"fork":false,"pushed_at":"2025-08-08T09:56:59.000Z","size":4,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-08T11:44:21.441Z","etag":null,"topics":["java","mybatis-plus","mybatis-plus-orm","mybatis-plus-relation","mybatis-plus-with"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xbyter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-08T09:29:44.000Z","updated_at":"2025-08-08T10:39:49.000Z","dependencies_parsed_at":"2025-08-08T11:44:23.269Z","dependency_job_id":"82f6f14d-af29-492a-a3e3-0ad057aa7db8","html_url":"https://github.com/xbyter/mybatis-plus-relation","commit_stats":null,"previous_names":["xbyter/mybatis-plus-relation"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/xbyter/mybatis-plus-relation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fmybatis-plus-relation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fmybatis-plus-relation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fmybatis-plus-relation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fmybatis-plus-relation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xbyter","download_url":"https://codeload.github.com/xbyter/mybatis-plus-relation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xbyter%2Fmybatis-plus-relation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271215037,"owners_count":24720098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mybatis-plus","mybatis-plus-orm","mybatis-plus-relation","mybatis-plus-with"],"created_at":"2025-08-19T20:19:35.868Z","updated_at":"2025-08-19T20:19:36.343Z","avatar_url":"https://github.com/xbyter.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mybatis-plus-relation\n无需写SQL就可以实现关联子查询(支持嵌套, 每个关联查询只查询一次), 类似Laravel的with方法.\n\n## 使用示例\n\n```java\n    //OrderComposite继承OrderEntity并扩展其关联属性. 查询的时候最好也建个OrderCompositeMapper, 其他Composite一样\n\tOrderComposite orderComposite = new OrderComposite();\n    orderComposite.setOrderId(2023029L);\n\n    OrderComposite orderComposite2 = new OrderComposite();\n    orderComposite2.setOrderId(2022919L);\n\n\n    OrderComposite orderComposite3 = new OrderComposite();\n    orderComposite3.setOrderId(2023053L);\n\n\n    List\u003cOrderComposite\u003e orderComposites = Arrays.asList(orderComposite, orderComposite2, orderComposite3);\n\n    HasOne\u003cOrderComposite, OrderAddressEntity\u003e orderAddressRelation = new HasOne\u003c\u003e(\n            OrderComposite::setOrderAddress,\n            orderAddressMapper,\n            OrderComposite::getOrderId,\n            OrderAddressEntity::getOrderId);\n\n    HasMany\u003cOrderComposite, OrderProductComposite\u003e orderProductsRelation = new HasMany\u003c\u003e(\n            OrderComposite::setOrderProducts,\n            orderProductCompositeMapper,\n            OrderComposite::getOrderId,\n            OrderProductComposite::getOrderId);\n\t\n\t//也可以扩展查询条件\n\torderProductsRelation.setQueryWrapperConsumer(\n\t\tqueryWrapper -\u003e queryWrapper.like(OrderProductComposite::getProductName, \"查询值\")\n\t);\n\t\n\t//关联orderProducts的子表\n\torderProductsRelation.addRelation(\n\t\tnew HasMany\u003c\u003e(\n            OrderProductComposite::setOrderProductDiscounts,\n            orderProductDiscountMapper,\n            OrderProductComposite::getOrderProductId,\n            OrderProductDiscountEntity::getOrderProductId\n\t\t)\n\t);\n\t\n\tRelationManager\u003cOrderComposite\u003e relationManager = new RelationManager\u003c\u003e();\n\trelationManager.addRelation(orderAddressRelation);\n\trelationManager.addRelation(orderProductsRelation);\n\trelationManager.fillCompositeData(orderComposites);\n```\n\n## 使用建议\n示例里面如果要多次使用关联查询的话就要重复多次建立关联关系, 建议把关联关系放在Mapper里, 比如\n\n```java\npublic interface OrderCompositeMapper extend BaseMapper\u003cOrderComposite\u003e {\n\n   default HasMany\u003cOrderComposite, OrderProductComposite\u003e withOrderProducts() {\n      return new HasMany\u003c\u003e(\n              OrderComposite::setOrderProducts,\n              SpringContextUtils.getBean(OrderProductCompositeMapper.class),\n              OrderComposite::getOrderId,\n              OrderProductComposite::getOrderId);\n   }\n}\n\n//使用示例\nRelationManager\u003cOrderComposite\u003e relationManager = new RelationManager\u003c\u003e();\nrelationManager.addRelation(orderCompositeMapper.withOrderProducts());\nrelationManager.fillCompositeData(orderComposites);\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxbyter%2Fmybatis-plus-relation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxbyter%2Fmybatis-plus-relation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxbyter%2Fmybatis-plus-relation/lists"}