基于Spring+JPA+Swagger的项目(2)
基于Spring+JPA+Swagger的项目(2)
解决pom.xml第一行报unknow错误
- 网上解决办法多半是强制更新maven
- 其实是maven和springboot-start-parent不匹配
- 也可以降低springboot到1.4.0即可
在搭建JPA项目时出现的问题
-
通过修改yml文件修改jpa自动建表功能
jpa: #自动建表 hibernate: ddl-auto: updateddl-auto的配置:
create----每次运行该程序,没有表格会新建表格,表内有数据会清空
create-drop----每次程序结束的时候会清空表
update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错 -
被
@Entity注解的实体类,一定要在主键前面加上@Id,来表示你的主键变量 -
在
DAO层,extends JpaRespository<实体类,主键类型>,第二个参数看主键的属性 -
对于Service层的
Interface实体接口以及ServiceImpl层的class implements interface实体接口的实现类,都要加@Service注解
关于项目接口的设计
-
在一开始的UserController之上,就可以加上一个Requestmapping
("/_api/user")来定义下面整个接口的前缀 -
在设计接口的返回时,有多个方面需要注意:
1.单独写一个
ReturnType类,用来存储返回的的值,它可以包含status,msg,code,data等专门传递给前端的信息,直接return,相当于返回一个json
2.对于每次抛出异常时,选用直接返回错误信息msg,还是根据不同的错误状态返回code错误码,要自己斟酌,注意,code可以和Swagger搭配,方便写接口信息
3.code最好和枚举类一起使用,可以直接调用.
4.在ReturnType中,用static final修饰方法,方便调用 -
前端传来的Json格式数据,在使用
RestController的情况下,直接使用一个Entity接收就可以 -
遇到的问题:对于时间,实体类中定义的TimeStamp,与在前端定义不同,因此我们需要一个中间类,完成json数据的接收,不然前端无法传来正确的类型(ajax造不出java的TimeStamp)
-
解决办法:创建一个EntityModel,将timestamp设计为long类型,接收前端传来的long时间戳,然后对其进行转换为java的TimeStamp传递给实体Entity
关于Swagger
- 使用Swagger自动生成文档接口
- Swagger注解
@Api(value=)用在Controller前,表示一个类ApiOperation(value="",notes="")放在方法前面,表示该方法的作用,ApiImplicitParam()用于表示方法中的一个变量- ApiImplicitParams({@ApiImplicitParam(),@ApiImplicitParam())可以在里面写多个参数
- 要针对前端发来的类型,
GET,POST,在一开始的RequestMapping()时进行区分,否则就会在文档中出现全类型的接口
下一步的学习
- 重构ReturnType,优化返回值
- 设计一种通用的Exception,用于抛出异常
- 将时间戳的转换完成,设计通用的时间戳转换方法
YY-MM-DD HH:MM:SS,因为从前端传过来的可能是各种形式 - 学习如何创建对应项目的新模板
- 返回项目信息时,如何进行翻页
浙公网安备 33010602011771号