{"id":20010180,"url":"https://github.com/jiangxy/react-java-goos","last_synced_at":"2025-10-09T23:19:25.548Z","repository":{"id":91122917,"uuid":"67400848","full_name":"jiangxy/react-java-goos","owner":"jiangxy","description":"配合React通用后台的小工具，自动生成后端接口","archived":false,"fork":false,"pushed_at":"2017-04-01T06:03:51.000Z","size":9108,"stargazers_count":38,"open_issues_count":1,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-09T23:19:24.839Z","etag":null,"topics":["database","database-management","java","react","spring","spring-mvc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiangxy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2016-09-05T08:08:04.000Z","updated_at":"2025-09-11T19:35:58.000Z","dependencies_parsed_at":"2024-04-21T19:49:58.976Z","dependency_job_id":null,"html_url":"https://github.com/jiangxy/react-java-goos","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jiangxy/react-java-goos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiangxy%2Freact-java-goos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiangxy%2Freact-java-goos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiangxy%2Freact-java-goos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiangxy%2Freact-java-goos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiangxy","download_url":"https://codeload.github.com/jiangxy/react-java-goos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiangxy%2Freact-java-goos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002344,"owners_count":26083340,"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-10-09T02:00:07.460Z","response_time":59,"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":["database","database-management","java","react","spring","spring-mvc"],"created_at":"2024-11-13T07:18:46.057Z","updated_at":"2025-10-09T23:19:25.543Z","avatar_url":"https://github.com/jiangxy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-java-goos\n\n配合[React通用后台](https://github.com/jiangxy/react-antd-admin)使用的一个小工具。\n\n[React通用后台](https://github.com/jiangxy/react-antd-admin)要求后端接口必须符合特定的格式，比如查询接口必须是`/api/xxx/select`、接口的返回必须是`HTTP 200`等。如果每个项目接入的时候都从头写一遍，估计要崩溃了。。。所以我在想能不能减少一些重复的工作。\n\n如果你的后端是java的（基于Spring），这个工具可以帮你快速生成一些模版类。把生成的类copy到自己的工程中并填写自己的逻辑，就可以直接使用通用后台提供的登录/CRUD/导入/导出等功能。\n\n## Quick Start\n\n首先要按照[React通用后台](https://github.com/jiangxy/react-antd-admin)的要求写好querySchema和dataSchema文件，然后直接执行jar文件即可：\n\n`java -jar goos-1.1.0.jar [输入目录] [输出目录]`\n\n输入目录大概是这种结构：\n```bash\nfoolbear:schema $ ls -lh\ntotal 48\n-rw-r--r--  1 foolbear  staff   377B  9  5 00:41 test.config.js  // test表的配置文件\n-rw-r--r--  1 foolbear  staff   1.5K  9  5 00:41 test.dataSchema.js  // test表的dataSchema\n-rw-r--r--  1 foolbear  staff   3.4K  9  5 00:41 test.querySchema.js  // test表的querySchema\n-rw-r--r--  1 foolbear  staff   133B  9  5 00:41 testSms.config.js  // testSms表的配置文件\n-rw-r--r--  1 foolbear  staff   547B  9  5 00:41 testSms.dataSchema.js\n-rw-r--r--  1 foolbear  staff   762B  9  5 00:41 testSms.querySchema.js\n```\n\n输出目录的结构：\n```bash\nfoolbear:output $ ls -lh -R\ntotal 16\n-rw-r--r--  1 foolbear  staff   2.1K  9  5 15:29 CommonResult.java  // 通用工具类\n-rw-r--r--  1 foolbear  staff   1.4K  9  5 15:29 LoginController.java  // 登录相关接口\ndrwxr-xr-x  5 foolbear  staff   170B  9  5 15:29 test\ndrwxr-xr-x  5 foolbear  staff   170B  9  5 15:29 testSms\n\n./test:  // test表相关的类\ntotal 32\n-rw-r--r--  1 foolbear  staff   7.6K  9  5 15:29 TestController.java  // test表CRUD相关接口\n-rw-r--r--  1 foolbear  staff   726B  9  5 15:29 TestQueryVO.java\n-rw-r--r--  1 foolbear  staff   269B  9  5 15:29 TestVO.java\n\n./testSms:  // testSms表相关的类\ntotal 32\n-rw-r--r--  1 foolbear  staff   7.6K  9  5 15:29 TestSmsController.java\n-rw-r--r--  1 foolbear  staff   453B  9  5 15:29 TestSmsQueryVO.java\n-rw-r--r--  1 foolbear  staff   317B  9  5 15:29 TestSmsVO.java\n```\n\n把生成的类copy到自己的项目中，将Controller类的逻辑填写完整，前端需要的接口就完成了。\n\n更多文档请参考[React通用后台](https://github.com/jiangxy/react-antd-admin)项目。\n\n## 关于跨域\n\nspring 4.2之后开始支持[CORS跨域](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS)，但可能有些问题，见[代码中的注释](src/main/resources/Controller.sample#L42)。\n\n对于SpringMVC的配置，给出一个例子：[springMVC.xml](springMVC.xml)，注意其中的message converter和跨域相关配置。\n\n跨域需要先一次OPTIONS请求，再实际的GET/POST之类请求。如果你的web.xml中配置了一些filter，可能导致OPTIONS请求失败，这就需要具体情况具体分析了。\n\n我的习惯是这边`localhost:8080`跑着tomcat，那边`localhost:4040`跑着webpack-dev-server，这样调试起来很方便。\n\n## TIPS\n\nschema中的`int/float`会被转换为java中的`Long/Double`，为了简单，不区分`Long/Integer`和`Double/Float`了，要注意一下。\n\n一般我们要将VO转换为其他pojo去操作，转换的时候可能用到`BeanUtils.copyProperties`之类的方法，对于同名但不同类型的字段，`copyProperties`不会生效的，比如不会把`Long id`的字段值copy给`Integer id`，要自己注意下。\n\n## 关于goos\n\n我在给这个项目想名字的时候，突然想起了早年玩过的一个游戏[World of Goo](https://zh.wikipedia.org/wiki/%E7%B2%98%E7%B2%98%E4%B8%96%E7%95%8C)。其中goo是一种黏黏糊糊的球状生物，可以搭建各种各样的结构，连接不同的建筑，跨越各种地形。倒是蛮切题的，这个项目也是希望**连接**React前端和java后端嘛。\n\n能力所限，我只能给出java版本的，而且也未必是最优的。希望以后能有更多版本的goos吧。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiangxy%2Freact-java-goos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiangxy%2Freact-java-goos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiangxy%2Freact-java-goos/lists"}