{"id":14983048,"url":"https://github.com/nbsaas/nbsaas-boot","last_synced_at":"2026-03-10T22:03:41.781Z","repository":{"id":85520399,"uuid":"606658765","full_name":"nbsaas/nbsaas-boot","owner":"nbsaas","description":"基于Request-Response的企业级快速开发框架，简单，快捷，采用spring boot，spring cloud,shiro,jpa,mybatis等技术，通过模型生成后端代码和前端vue3代码。","archived":false,"fork":false,"pushed_at":"2024-11-03T03:30:09.000Z","size":806,"stargazers_count":12,"open_issues_count":6,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-29T21:43:24.600Z","etag":null,"topics":["jpa","nbsaas","nbsaas-boot","shiro","spring","spring-boot","springcloud","springmvc"],"latest_commit_sha":null,"homepage":"http://www.nbsaas.com/index.htm","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/nbsaas.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}},"created_at":"2023-02-26T06:37:28.000Z","updated_at":"2025-08-13T11:24:29.000Z","dependencies_parsed_at":"2023-11-19T16:24:30.826Z","dependency_job_id":"08d7b07f-680d-46e4-ad42-97bd58f05bd9","html_url":"https://github.com/nbsaas/nbsaas-boot","commit_stats":{"total_commits":253,"total_committers":2,"mean_commits":126.5,"dds":"0.18972332015810278","last_synced_commit":"f02337899283a58402a7560b3e800af3eea95e0d"},"previous_names":["nbsaas/nbsaas-boot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nbsaas/nbsaas-boot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbsaas%2Fnbsaas-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbsaas%2Fnbsaas-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbsaas%2Fnbsaas-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbsaas%2Fnbsaas-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nbsaas","download_url":"https://codeload.github.com/nbsaas/nbsaas-boot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nbsaas%2Fnbsaas-boot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30357614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"ssl_error","status_checked_at":"2026-03-10T21:40:59.357Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["jpa","nbsaas","nbsaas-boot","shiro","spring","spring-boot","springcloud","springmvc"],"created_at":"2024-09-24T14:06:39.185Z","updated_at":"2026-03-10T22:03:41.734Z","avatar_url":"https://github.com/nbsaas.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nbsaas-boot\n\n[![maven](https://img.shields.io/maven-central/v/com.nbsaas.boot/nbsaas-boot.svg)](https://central.sonatype.com/artifact/com.nbsaas.boot/nbsaas-boot)\n[![QQ](https://img.shields.io/badge/chat-on%20QQ-ff69b4.svg?style=flat-square)](//shang.qq.com/wpa/qunwpa?idkey=d1a308945e4b2ff8aeb1711c2c7914342dae15e9ce7041e94756ab355430dc78)\n[![Apache-2.0](https://img.shields.io/hexpm/l/plug.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/idea/)\n[![GitHub forks](https://img.shields.io/github/stars/nbsaas/nbsaas-boot.svg?style=social\u0026logo=github\u0026label=Stars)](https://github.com/nbsaas/nbsaas-boot)\n#### 架构图\n![架构图](https://foruda.gitee.com/images/1692714554881768744/cdda40bc_1029.png \"架构图.png\")\n\n#### 介绍\n\nnbsaas-boot是一个企业级快速开发框架，具有以下特点：\n\n1. 自动建表：nbsaas-boot提供了自动建表功能，根据用户定义的数据模型自动生成数据库表结构，减少手动操作，提高开发效率。\n\n2. 开发规范：nbsaas-boot提供一套开发规范，包括代码风格、命名规范、注释规范等，使团队开发更加规范化和高效化。\n\n3. 数据搜索：nbsaas-boot提供一种新的数据搜索，基于搜索引擎技术，快速搜索海量数据，提供精确和高效的搜索结果。\n\n4. 代码生成器：nbsaas-boot提供代码生成器，根据数据模型自动生成前端和后端代码，提高开发效率和代码质量。\n\n5. 多租户支持：nbsaas-boot支持多租户，为不同客户提供独立的数据存储空间和访问权限，保证数据安全性和隔离性。\n\n6. 云原生架构：nbsaas-boot基于云原生架构设计，支持容器化部署和自动化运维，具有高可用、高性能、弹性伸缩等优点。\n\n7. 数据安全：nbsaas-boot采用多重数据安全保障措施，包括数据加密、访问控制、备份与恢复等，保护用户数据的安全性和可靠性。\n\n8. 用户友好性：nbsaas-boot提供友好的用户界面和操作体验，快速上手和使用，减少学习成本和使用难度。\n\n9. 可扩展性：nbsaas-boot具有良好的可扩展性，支持模块化开发和插件机制，方便扩展功能和定制化需求。\n\n10. 通用数据查询功能，查询修改实时生效，权限，缓存，限流，预处理，后处理，无需重新部署。\n\n综上所述，nbsaas-boot是一个全面、高效、安全、可扩展、易用的SaaS平台，适用于各种企业级应用的开发和部署。\n\n### 技术选型：\n\n* **服务端**\n* Spring、SpringMVC、spring data jpa\n* Spring boot,Spring cloud,Spring alibaba\n* 安全权限 Shiro\n* 缓存 Ehcache\n* 视图模板 freemarker\n* 其它 Jsoup、gson\n* 核心采用Request-Response模式，Chain模型。\n\n## 编码规范\n\n### 1.项目结构规范\n\n```\n- 主工程（Main Project）\n  - apis  // 包含各种API接口的模块\n    - business-api  // 处理业务逻辑的API接口\n    - statistics-api  // 提供统计数据的API接口\n  - code-generator  // 代码生成器，用于生成特定模块的代码或配置文件\n  - gates  // 网关模块，用于管理和转发请求\n    - gateway  // 主网关模块，负责整个系统的流量管理\n    - admins  // 管理员模块\n      - admin  // 管理员信息管理功能\n      - tenant  // 租户信息管理功能\n    - fronts  // 前台模块\n      - tenant  // 租户前台页面管理功能\n      - front  // 前台页面管理功能\n    - apps  // 应用程序模块\n      - db-app  // 数据库管理应用程序\n      - tenant-app  // 租户管理应用程序\n    - saas  // SaaS模块\n      - front-saas  // 前台SaaS功能\n      - admin-saas  // 后台SaaS功能\n  - resources  // 资源管理模块，用于管理系统的各种资源\n    - adapters  // 适配器模块，处理不同资源之间的适配问题\n    - db-resources  // 数据库资源管理模块\n      - tenant-resources  // 租户相关的数据库资源管理\n      - business-resources  // 业务相关的数据库资源管理\n\n```\n\n```\n{主工程}\n{主工程}.apis\n{主工程}.apis.business-api\n{主工程}.apis.statistics-api\n{主工程}.code-generator\n{主工程}.gates\n{主工程}.gates.gateway\n{主工程}.gates.admins\n{主工程}.gates.admins.admin\n{主工程}.gates.admins.tenant\n{主工程}.gates.fronts\n{主工程}.gates.fronts.tenant\n{主工程}.gates.fronts.front\n{主工程}.gates.apps\n{主工程}.gates.apps.db-app\n{主工程}.gates.apps.tenant-app\n{主工程}.gates.saas\n{主工程}.gates.saas.front-saas\n{主工程}.gates.saas.admin-saas\n{主工程}.resources\n{主工程}.resources.adapters\n{主工程}.resources.db-resources\n{主工程}.resources.db-resources.tenant-resources\n{主工程}.resources.db-resources.business-resources\n\n```\n\n### 2.Api模块结构规范\n\n\n```\ncom.{公司域名}.{主工程}.{子工程}\ncom.{公司域名}.{主工程}.{子工程}.api.apis\ncom.{公司域名}.{主工程}.{子工程}.api.domain.enums\ncom.{公司域名}.{主工程}.{子工程}.api.domain.request\ncom.{公司域名}.{主工程}.{子工程}.api.domain.response\ncom.{公司域名}.{主工程}.{子工程}.api.domain.simple\ncom.{公司域名}.{主工程}.{子工程}.ext.apis\ncom.{公司域名}.{主工程}.{子工程}.ext.domain.enums\ncom.{公司域名}.{主工程}.{子工程}.ext.domain.request\ncom.{公司域名}.{主工程}.{子工程}.ext.domain.response\ncom.{公司域名}.{主工程}.{子工程}.ext.domain.simple\n```\n\n### 3.Resource模块结构规范\n\n```\ncom.{公司域名}.{主工程}.{子工程}\ncom.{公司域名}.{主工程}.{子工程}.data.entity\ncom.{公司域名}.{主工程}.{子工程}.data.repository\ncom.{公司域名}.{主工程}.{子工程}.rest.conver\ncom.{公司域名}.{主工程}.{子工程}.rest.resource\ncom.{公司域名}.{主工程}.{子工程}.ext.conver\ncom.{公司域名}.{主工程}.{子工程}.ext.resource\n```\n\n### 4.api接口\n\n```\n/**\n * 响应接口\n *\n * @param \u003cResponse\u003e 详情对象\n * @param \u003cSimple\u003e   列表对象\n * @param \u003cRequest\u003e     表单对象\n */\npublic interface ResponseApi\u003cResponse, Simple, Request extends RequestId\u003e {\n\n    /**\n     * 分页查询\n     *\n     * @param request\n     * @return 分页数据信息\n     */\n    PageResponse\u003cSimple\u003e search(PageRequest request);\n\n    /**\n     * 根据条件查询集合，不分页\n     *\n     * @param request\n     * @return 数据集合数据\n     */\n    ListResponse\u003cSimple\u003e list(PageRequest request);\n\n    /**\n     * 创建\n     *\n     * @param request\n     * @return 数据详情\n     */\n    ResponseObject\u003cResponse\u003e create(Request request);\n\n    /**\n     * 更新\n     *\n     * @param request\n     * @return 数据详情\n     */\n    ResponseObject\u003cResponse\u003e update(RequestId request);\n\n    /**\n     * 删除\n     *\n     * @param request\n     * @return 删除状态\n     */\n    ResponseObject\u003c?\u003e delete(RequestId request);\n\n    /**\n     * 根据ID查询详情\n     *\n     * @param request\n     * @return 数据详情\n     */\n    ResponseObject\u003cResponse\u003e view(RequestId request);\n\n}\n```\n\n### 5.搜索对象\n\n```\n@Getter\n@Setter\n@EqualsAndHashCode(callSuper = true)\n@ToString(callSuper = true)\npublic class UserInfoSearchRequest   extends PageRequest implements Serializable {\n\n\n      \n      @Search(name = \"phone\",operator = Operator.like)\n      private String phone;\n\n     @Search(name = \"catalog\",operator = Operator.eq)\n      private Integer catalog;\n\n    \n     @Search(name = \"note\",operator = Operator.like)\n      private String note;\n     \n     @Search(name = \"loginSize\",operator = Operator.eq)\n      private Integer loginSize;\n     \n     @Search(name = \"name\",operator = Operator.like)\n      private String name;\n\n\n}\n```\n\n## nbsaas-boot业务生态\n\n| 项目名称                        | git地址                                        | \n|:----------------------------|--------------------------------------------------|\n| nbsaas-boot-starter         | https://gitee.com/cng1985/nbsaas-boot-starter    | \n| nbsaas-product-starter      | https://gitee.com/cng1985/nbsaas-product-starter | \n| nbsaas-sample-starter       | https://gitee.com/cng1985/nbsaas-sample-starter  | \n| nbsaas-app-starter          | https://gitee.com/cng1985/nbsaas-app-starter     | \n| nbsaas-article-starter      | https://gitee.com/cng1985/nbsaas-article-starter | \n| nbsaas-no-starter           | https://gitee.com/cng1985/nbsaas-no-starter      | \n| nbsaas-data-starter         | https://gitee.com/cng1985/nbsaas-data-starter    | \n| nbsaas-store-starter        | https://gitee.com/cng1985/nbsaas-store-starter   | \n| nbsaas-quartz-starter        | https://gitee.com/cng1985/nbsaas-quartz-starter   | \n\n\n\n## 通用查询\n### 批量查询\n#### /data/batch\n```\n{\n    \"model\": \"batchTest\",\n    \"page\": 1,\n    \"size\": 1,\n    \"filters\": {\n        \"beginDate\": \"2024-01-03\",\n        \"endDate\": \"2024-05-09\",\n        \"warehouseCodeList\": \"000,SD002\"\n    }\n}\n\n```\n\n\n### 列表查询\n#### /data/list\n```\n{\n    \"model\": \"pageForUserLoginLog\",\n    \"page\": 1,\n    \"size\": 1,\n    \"filters\": {\n        \"beginDate\": \"2024-01-03\",\n        \"endDate\": \"2024-05-09\",\n        \"warehouseCodeList\": \"000,SD002\"\n    }\n}\n\n```\n\n\n### 分页查询\n#### /data/search\n```\n{\n    \"model\": \"pageForUserLoginLog\",\n    \"page\": 1,\n    \"size\": 1,\n    \"filters\": {\n        \"beginDate\": \"2024-01-03\",\n        \"endDate\": \"2024-05-09\",\n        \"warehouseCodeList\": \"000,SD002\"\n    }\n}\n\n```\n\n### 列表无条件查询\n#### /data/data/{model}\n例如 http://152.136.236.93:8100/data/data/org\n\n\n已经发布到maven中央仓库了\n\n```\n    \u003cparent\u003e\n        \u003cgroupId\u003ecom.nbsaas.boot\u003c/groupId\u003e\n        \u003cartifactId\u003enbsaas-boot\u003c/artifactId\u003e\n        \u003cversion\u003e1.1.19-2024\u003c/version\u003e\n    \u003c/parent\u003e\n```\n\n### 使用nbsaas-boot的项目\n[nbsaas-mall2](https://gitee.com/quhaodian/nbsaas-mall2)\n[nbsaas-admin](https://gitee.com/cng1985/nbsaas-admin)\n[nbsaas-boot-starter](https://gitee.com/cng1985/nbsaas-boot-starter)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnbsaas%2Fnbsaas-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnbsaas%2Fnbsaas-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnbsaas%2Fnbsaas-boot/lists"}