|
| 1 | + |
| 2 | +[](https://github.com/lihengming/spring-boot-api-project-seed/releases) |
1 | 3 | ## 简介 |
2 | | -Spring Boot API Project Seed 是一个基于Spring Boot & MyBatis的种子项目,用于快速构建纯API的项目(中小型项目),该种子项目已经有过多个真实项目的实践,稳定、简单、快速,使我们摆脱那些重复劳动,专注于业务代码编写,减少加班。下面是一个简单的使用演示,看如何基于本项目在短短几十秒钟内实现一套简单的API,并运行提供服务。 |
| 4 | +Spring Boot API Project Seed 是一个基于Spring Boot & MyBatis的种子项目,用于快速构建API、RESTful API项目(中小型项目),该种子项目已经有过多个真实项目的实践,稳定、简单、快速,使我们摆脱那些重复劳动,专注于业务代码编写,减少加班。下面是一个简单的使用演示,看如何基于本项目在短短几十秒钟内实现一套简单的API,并运行提供服务。 |
3 | 5 |
|
4 | 6 | [](http://v.youku.com/v_show/id_XMjg1MDc5NDc4OA==.html?spm=a2h3j.8428770.3416059.1) |
5 | 7 | ## 特征&提供 |
6 | | -- 最佳实践的项目结构、配置文件及精简的Maven依赖([查看项目结构图](https://github.com/lihengming/shared-files/blob/master/project-struct.png)) |
| 8 | +- 最佳实践的项目结构、配置文件、精简的POM([查看项目结构图](https://github.com/lihengming/shared-files/blob/master/project-struct.png)) |
7 | 9 | - 统一响应结果封装及生成工具 |
8 | 10 | - 统一异常处理 |
9 | 11 | - 简单的接口签名认证 |
10 | 12 | - 常用基础方法抽象封装 |
11 | 13 | - 使用Druid Spring Boot Starter 集成Druid连接池与监控 |
| 14 | +- 使用FastJsonHttpMessageConverter,提高Json序列化速度 |
12 | 15 | - 集成MyBatis、通用Mapper插件、PageHelper分页插件,实现单表业务零SQL |
13 | | -- 提供代码生成器根据表名生成对应的Model、Mapper、MapperXML、Service、ServiceImpl、Controller(```默认提供POST和RESTful两套Controller模板,根据需要在CodeGenerator.genController(tableName)方法中自己选择,默认是纯POST的```)等基础代码,代码模板可根据实际项目的需求来定制,以便渐少重复劳动(```由于每个公司业务都不太一样,所以只提供了一些简单的通用方法模板,主要是提供一个思路来减少重复代码的编写,在我们公司的使用中,其实根据业务的抽象编写了大量的代码模板```) |
| 16 | +- 提供代码生成器根据表名生成对应的Model、Mapper、MapperXML、Service、ServiceImpl、Controller(默认提供POST和RESTful两套Controller模板,根据需要在```CodeGenerator.genController(tableName)```方法中自己选择,默认是纯POST的)等基础代码,代码模板可根据实际项目的需求来定制,以便渐少重复劳动。由于每个公司业务都不太一样,所以只提供了一些简单的通用方法模板,主要是提供一个思路来减少重复代码的编写,在我们公司的使用中,其实根据业务的抽象编写了大量的代码模板 |
14 | 17 | - 另有彩蛋,待你探索 |
15 | 18 |
|
16 | 19 | ## 快速开始 |
17 | 20 | 1. 克隆项目 |
18 | 21 | 2. 对```test```包内的代码生成器```CodeGenerator```进行配置,主要是JDBC,因为要根据表名来生成代码 |
19 | | -3. 如果只是想根据上面的演示来亲自试试的话可以使用test resources 下的的```demo-user.sql```,否则忽略该步 |
20 | | -3. 输入表名,运行```CodeGenerator.mian()```方法,生成基础代码,可能需要刷新项目目录才会出来 |
21 | | -4. 根据业务在基础代码上进行扩展即可 |
| 22 | +3. 如果只是想根据上面的演示来亲自试试的话可以使用```test resources```目录下的```demo-user.sql```,否则忽略该步 |
| 23 | +3. 输入表名,运行```CodeGenerator.mian()```方法,生成基础代码(可能需要刷新项目目录才会出来) |
| 24 | +4. 根据业务在基础代码上进行扩展 |
22 | 25 | 5. 对开发环境配置文件```application-dev.properties```进行配置,启动项目,Have Fun! |
23 | 26 |
|
24 | 27 | ## 开发建议 |
25 | 28 | - 表名,应使用小写,多个单词使用下划线拼接 |
26 | | -- Model内成员变量建议于表字段相等,如需扩展成员变量(比如连表查询),建议创建DTO,否则需在对应字段上加```@Transient```注解,详情见[通用Mapper插件文档说明](https://mapperhelper.github.io/docs/2.use/) |
| 29 | +- Model内成员变量建议与表字段数量对应,如需扩展成员变量(比如连表查询)建议创建DTO,否则需在扩展的成员变量上加```@Transient```注解,详情见[通用Mapper插件文档说明](https://mapperhelper.github.io/docs/2.use/) |
27 | 30 | - 建议业务失败使用```ServiceException(""message")```抛出,由统一异常处理器来封装JSON结果,比如```throw new ServiceException("该手机号已存在")```,会直接被封装为```{"code":400,"message":"该手机号已存在"}```返回,无需自己处理,尽情抛出 |
| 31 | +- 需要工具类的话建议先从```apache-commons-*```和```guava```中找,实在没有再造轮子或引入类库,尽量精简项目 |
28 | 32 | - 开发规范建议遵循阿里巴巴Java开发手册([最新版下载](https://github.com/lihengming/shared-files/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8Cv1.2.0.pdf)) |
29 | 33 |
|
30 | 34 | ## 技术选型&文档 |
|
0 commit comments