Skip to content

Commit 05ad791

Browse files
committed
修该项目说明
1 parent 309dea7 commit 05ad791

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

README.md

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
![Licence](https://img.shields.io/badge/licence-none-green.svg)
1+
[!Spring Boot 2.0](https://img.shields.io/badge/Spring%20Boot-2.0-brightgreen.svg)
2+
[!license](https://img.shields.io/badge/license-apache%202.0-blue.svg)
23
[![GitHub Release](https://img.shields.io/github/release/lihengming/spring-boot-api-project-seed.svg)](https://github.com/lihengming/spring-boot-api-project-seed/releases)
34
## 平台简介
45

5-
该项目基于 Spring Boot API Project Speed 开源项目改造而来,将原先的 SpringBoot 版本 1.5.4.RELEASE 升级为 2.1.1.RELEASE 。
6-
去除 MyBatis 通用Mapper插件替换为MyBatis 提供SpringBoot starter 原生方式,添加在线文档工具 Knife4j、单元测试封装等新功能。具体请参看 *提供内置功能*列表。
6+
Spring Boot API Project Monkey 项目基于 Spring Boot API Project Speed [项目地址](https://github.com/lihengming/spring-boot-api-project-seed) 开源项目改造而来,将原先的 SpringBoot 版本 1.5.4.RELEASE 升级为 2.1.1.RELEASE 。
7+
去除 MyBatis 通用Mapper插件替换为MyBatis 提供SpringBoot starter 原生方式,添加在线文档工具 Knife4j、单元测试封装、优化代码以及代码目录结构等新功能。具体请参看 *提供内置功能*列表。
78

89
### 开源该项目的初衷
910

1011
Spring Boot API Project Speed 项目是自己在 GitHub 查找 SpringBoot API 开源项目时发现的,参看了下源码后觉得写的确实不错,
11-
但是有些地方和我想要的不太一样,于是利用业务时间改造了一个自己喜欢的后台 API 项目的轮子。本着继续延续 Spring Boot API Project Speed 项目的宗旨:快速、简洁、灵活,故又起了一个新名字 Moneky 。
12+
但是有些地方和我想要的不太一样,于是利用业务时间改造了一个自己喜欢的后台 API 项目的轮子。本着继续延续 Spring Boot API Project Speed 项目的宗旨:快速、简洁、灵活,故又起了一个新名字 Moneky ,
13+
同时项目部分代码参考优秀开源项目 RuoYi [RuoYi项目地址](https://github.com/lerry903/RuoYi)
1214

1315
## 提供内置功能
1416

@@ -25,23 +27,22 @@ Spring Boot API Project Speed 项目是自己在 GitHub 查找 SpringBoot API
2527
- 对 MockMvc 进行封装使用MockMvc 测试更简单,同时基于封装的MockMvc单元测试基础代码生成。
2628
- 集成 kk-anti-reptile 反爬虫,防止接口盗刷。
2729
- 集成优秀工具类库 Hutool
30+
- 集成 Jmockdta 一款模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具
2831
- 另有彩蛋,待你探索
2932

3033
## 快速开始
3134
1. 克隆项目
32-
2.```test```包内的代码生成器```CodeGenerator```进行配置,主要是JDBC,因为要根据表名来生成代码
35+
2.```test```包内的代码生成器```CodeGeneratorConstant```进行配置,主要是包名和项目路径以及开发者信息。
3336
3. 如果只是想根据上面的演示来亲自试试的话可以使用```test resources```目录下的```demo-user.sql```,否则忽略该步
34-
3. 输入表名,运行```CodeGenerator.main()```方法,生成基础代码(可能需要刷新项目目录才会出来)
37+
3. CodeGenerator 修改表名(TABLE_NAME)、包名(PACKAGE_NAME)、Entitiy名称(ENTITY_NAME)运行```CodeGenerator.genCodeByCustomModelName()```测试方法,生成基础代码(可能需要刷新项目目录才会出来)
3538
4. 根据业务在基础代码上进行扩展
3639
5. 对开发环境配置文件```application-dev.properties```进行配置,启动项目,Have Fun!
3740

3841
## 开发建议
3942
- 表名,建议使用小写,多个单词使用下划线拼接
4043
- Model内成员变量建议与表字段数量对应,如需扩展成员变量(比如连表查询)建议创建DTO,否则需在扩展的成员变量上加```@Transient```注解,详情见[通用Mapper插件文档说明](https://mapperhelper.github.io/docs/2.use/)
4144
- 建议业务失败直接使用```ServiceException("message")```抛出,由统一异常处理器来封装业务失败的响应结果,比如```throw new ServiceException("该手机号已被注册")```,会直接被封装为```{"code":400,"message":"该手机号已被注册"}```返回,无需自己处理,尽情抛出
42-
- 需要工具类的话建议先从```apache-commons-*``````guava```中找,实在没有再造轮子或引入类库,尽量精简项目
4345
- 开发规范建议遵循阿里巴巴Java开发手册([最新版下载](https://github.com/alibaba/p3c))
44-
- 建议在公司内部使用[ShowDoc](https://github.com/star7th/showdoc)[SpringFox-Swagger2](https://github.com/springfox/springfox)[RAP](https://github.com/thx/RAP)等开源项目来编写、管理API文档
4546

4647
## 技术选型&文档
4748
- Spring Boot([查看Spring Boot学习&使用指南](http://www.jianshu.com/p/1a9fd8936bd8)
@@ -52,6 +53,7 @@ Spring Boot API Project Speed 项目是自己在 GitHub 查找 SpringBoot API
5253
- Knife4j [查看官方中文文档](https://doc.xiaominfo.com/guide/useful.html)
5354
- Hutool [查看Hutool使用文档](https://www.hutool.cn/docs/#/)
5455
- kk-anti-reptile [查看kk-anti-reptile使用文档](https://github.com/kekingcn/kk-anti-reptile)
56+
- Jmockdta [查看Jmockdta使用文档](https://github.com/jsonzou/jmockdata)
5557
- 其他略
5658

5759
## License

src/test/java/com/company/project/generator/CodeGenerator.java

+20-17
Original file line numberDiff line numberDiff line change
@@ -32,31 +32,34 @@
3232
@RunWith(SpringRunner.class)
3333
public class CodeGenerator {
3434

35+
public static final String TABLE_NAME = "demo_user";
36+
public static final String PACKAGE_NAME = "demoUser";
37+
public static final String ENTITIY_NAME = "DemoUser";
3538
private Logger log = LoggerFactory.getLogger(CodeGenerator.class);
3639

3740
@Test
3841
public void genCodeByCustomModelName() throws IOException, TemplateException {
39-
this.genCodeByCustomModelName("demo_user","demoUser","DemoUser");
42+
this.genCodeByCustomModelName(TABLE_NAME, PACKAGE_NAME, ENTITIY_NAME);
4043
}
4144

4245
/**
4346
* 通过数据表名称,和自定义的 Model 名称生成代码
4447
* 如输入表名称 "t_user_detail" 和自定义的 Model 名称 "User" 将生成 User、UserMapper、UserService ...
4548
* @param tableName 数据表名称
46-
* @param modelName 自定义的 Model 名称
49+
* @param entityName 自定义的 Entity 名称
4750
*/
48-
public void genCodeByCustomModelName(String tableName,String packageName, String modelName) throws IOException, TemplateException {
49-
genModelAndMapper(tableName,packageName, modelName);
50-
genService(tableName,packageName, modelName);
51-
genController(tableName,packageName, modelName);
52-
genControllerTest(tableName,packageName, modelName);
51+
public void genCodeByCustomModelName(String tableName,String packageName, String entityName) throws IOException, TemplateException {
52+
genModelAndMapper(tableName,packageName, entityName);
53+
genService(tableName,packageName, entityName);
54+
genController(tableName,packageName, entityName);
55+
genControllerTest(tableName,packageName, entityName);
5356
}
5457

55-
public void genModelAndMapper(String tableName,String packageName, String modelName) {
58+
public void genModelAndMapper(String tableName,String packageName, String entityName) {
5659
CodeGenneratorService codeGenneratorService = SpringUtil.getBean(CodeGenneratorService.class);
5760
GenTable tableInfo = codeGenneratorService.getTableInfo(tableName);
5861

59-
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName,modelName);
62+
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName,entityName);
6063

6164
data.put("table",tableInfo);
6265
data.put("mybatisIdParam"," #{id}");
@@ -82,9 +85,9 @@ public void genModelAndMapper(String tableName,String packageName, String model
8285
}
8386
}
8487

85-
public void genService(String tableName,String packageName, String modelName) {
88+
public void genService(String tableName,String packageName, String entityName) {
8689
try {
87-
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, modelName);
90+
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, entityName);
8891
String modelNameUpperCamel = (String)data.get("modelNameUpperCamel");
8992

9093
FreemarkerUtil freemarkerUtil = new FreemarkerUtil(data);
@@ -100,10 +103,10 @@ public void genService(String tableName,String packageName, String modelName) {
100103
}
101104
}
102105

103-
public void genController(String tableName,String packageName, String modelName) {
106+
public void genController(String tableName,String packageName, String entityName) {
104107
try {
105108

106-
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, modelName);
109+
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, entityName);
107110
String modelNameUpperCamel = (String)data.get("modelNameUpperCamel");
108111
data.put("baseRequestMapping", CodeNameConverUtil.modelNameConvertMappingPath(modelNameUpperCamel));
109112

@@ -117,10 +120,10 @@ public void genController(String tableName,String packageName, String modelName
117120

118121
}
119122

120-
public void genControllerTest(String tableName,String packageName, String modelName) {
123+
public void genControllerTest(String tableName,String packageName, String entityName) {
121124
try {
122125

123-
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, modelName);
126+
Map<String, Object> data = initBaseTemplateParamMap(tableName,packageName, entityName);
124127
String modelNameUpperCamel = (String)data.get("modelNameUpperCamel");
125128
data.put("baseRequestMapping", CodeNameConverUtil.modelNameConvertMappingPath(modelNameUpperCamel));
126129

@@ -134,11 +137,11 @@ public void genControllerTest(String tableName,String packageName, String model
134137

135138
}
136139

137-
private Map<String, Object> initBaseTemplateParamMap(String tableName,String packageName,String modelName) {
140+
private Map<String, Object> initBaseTemplateParamMap(String tableName,String packageName,String entityName) {
138141
Map<String, Object> data = new HashMap<>();
139142
data.put("date", DATE);
140143
data.put("author", AUTHOR);
141-
String modelNameUpperCamel = StringUtils.isEmpty(modelName) ? CodeNameConverUtil.tableNameConvertUpperCamel(tableName) : modelName;
144+
String modelNameUpperCamel = StringUtils.isEmpty(entityName) ? CodeNameConverUtil.tableNameConvertUpperCamel(tableName) : entityName;
142145
data.put("modelNameUpperCamel", modelNameUpperCamel);
143146
data.put("modelNameLowerCamel", CodeNameConverUtil.tableNameConvertLowerCamel(tableName));
144147
data.put("basePackage", BASE_PACKAGE);

0 commit comments

Comments
 (0)