基于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: update
    

    ddl-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注解
    1. @Api(value=)用在Controller前,表示一个类
    2. ApiOperation(value="",notes="")放在方法前面,表示该方法的作用,
    3. ApiImplicitParam()用于表示方法中的一个变量
    4. ApiImplicitParams({@ApiImplicitParam(),@ApiImplicitParam())可以在里面写多个参数
    5. 要针对前端发来的类型,GET,POST,在一开始的RequestMapping()时进行区分,否则就会在文档中出现全类型的接口

下一步的学习

  • 重构ReturnType,优化返回值
  • 设计一种通用的Exception,用于抛出异常
  • 将时间戳的转换完成,设计通用的时间戳转换方法YY-MM-DD HH:MM:SS,因为从前端传过来的可能是各种形式
  • 学习如何创建对应项目的新模板
  • 返回项目信息时,如何进行翻页
posted on 2020-08-18 00:17  Dr森  阅读(76)  评论(0)    收藏  举报