基于Spring+JPA+Swagger的项目(1)

基于Spring+JPA+Swagger的项目(1)

环境配置

  1. java1.8
  2. mysql5.7
  3. maven3.6.0
  4. lombok
  5. JPA
  6. Swagger

简单的JPA应用

  • 第一步在数据库中创建相关的数据,表信息等等,创建实体类Entity,实体类内属性与表信息一一对应.实际上,可以直接创建实体类,JPA会自动在数据库中建表.
  • 第二步根据刚才的实体类创建DAO接口,直接extends JPAReposity即可,在JPA库中已经包含基本的查询语句,删除语句,以及插入语句,但是功能比较简单,对于复杂的语句依旧需要自定义sql语句
  • 第三部创建Service,该接口中定义相关的方法,之后在ServiceImpl中实现该方法,大部分直接调用DAO中的增删改查即可
  • 第四部创建Controller,在该层中,主要根据路由,获取用户访问路径,根据路径设计业务逻辑,然后直接调用ServiceImpl中的方法去实现,最后通过return,可以返回给页面String类型,直接输出到页面上.

今天遇到部分问题

@GetMapping和@PostMapping 和@RequestMapping区别

  1. @GetMapping:用于将HTTP get请求映射到特定处理程序的方法注解,是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

  2. @PostMapping: 用于将HTTP post请求映射到特定处理程序的方法注解,是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写

  3. @RequestMapping:一般情况下都是用@RequestMapping(method=RequestMethod.),因为@RequestMapping可以直接替代以上两个注解,但是以上两个注解并不能替代@RequestMapping,@RequestMapping相当于以上两个注解的父类!

在controller中通过路由传递参数进行查询的调用

  • 使用@PathVariable注解
@RequestMapping(value = "/{id}/{str}") 
public ModelAndView helloWorld(@PathVariable String id, @PathVariable String str) { 
System.out.println(id); 
System.out.println(str); 
return new ModelAndView("/helloWorld"); 
}
  • 对于要加载的类,每个类之前都要添加一个@Autowired 不然该对象Bean无法被加载,会报出NullException的错误

  • 在spring中的实体类一定要和自己数据库中完全对应,否则,在Spring中的变量会自动在表中创建一个新的column

  • JPAReposity基本上实现了所有基础的sql操作,直接在DAO类中继承该类,最后直接调用就可以,基础的函数包括基础的增删改查

  • 对数据库进行插入删除时,必须在Service层前加上@transaction,否则是无法执行的

  • 使用List<?>统一接收List是可行的,会不会出现其他问题暂时不知

  • Entity->EntityDAO->EntityService->EntityServiceImpl->Controller

之后需要学习的部分

  1. 如何设计更好的路由,减少重复代码
  2. 在设计查询时,逻辑是否完整,例如在查询任务时,是不是用contains比全匹配更有意义
  3. 设计异常页面的跳转
  4. 自定义查询语句与删除语句,增加程序可用性
  5. 暴露给前端的接口,应该是Json格式,包含是否成功,msg,以及要传递的数据等等
  6. 使用Swagger返回接口的文档
posted on 2020-08-18 00:15  Dr森  阅读(126)  评论(0)    收藏  举报