将项目大体分为四层,分别为:domain(定义层)、dao(数据库连接层)、service(服务层)、controller(控制器层)。
1、domain(定义层)
主要用来定义一些实体类,所谓实体类就是业务中的实体,通常与数据库中的表一一对应。每个类中所定义的参数也应该与所对应表的列名所对应。例如在此项目中,定义一个实体类为Book,如:
Book实体所对应的表为:并在类中添加setter和getter方法(添加方法:快捷键Alt+Insert 选setter和getter)。
2、DAO层
DAO(Data Access Object)层用于封装对数据库的访问操作,包括数据的增删改查等操作。DAO 层位于持久层,与数据库进行交互,负责处理数据的持久化和检索。
Repository 接口是 DAO 层的核心部分,用于定义数据访问操作。需要在代码前加注释。
@Repository
在此项目中我们在DAO层里面添加bookDao,主要是对book表进行增删改查,使用jdbc连接数据库。
3、service层
Service 层在 Spring Boot 项目中扮演着实现业务逻辑、管理事务、封装业务功能等角色。它将业务逻辑封装成方法,对外提供统一的调用接口,同时负责执行业务规则和管理事务。
Service层的方法的实现中,会直接调用DAO层的方法来实现业务逻辑。例如在此项目中,bookService的方法中有queryBook(查书)、getAllBook(得到所有书的信息)等,如下图
需要注意的是,需要添加注释:
@Service
4、controller(控制器层)
Controller 层也称为控制器层,是整个应用程序的入口点之一,负责处理用户请求并返回响应。Controller 层位于应用程序的顶层,与用户进行交互,并根据用户的请求调用相应的业务逻辑来处理请求。
简单来说,接受hettp请求,将URL路由映射到相应的处理方法上面,再将相应的结果返回给客户端(或前端),通常响应结果为json格式。
我们可以统一controller返回的结果形式,定义一个类用来封装返回对象的如下:
package com.example.library00.book.model;
public class ResponseBase {
private int code ;
private String message;
private Object data;
public static ResponseBase success(){
ResponseBase responseBase = new ResponseBase();
responseBase.setCode(200);
return responseBase;
}
public static ResponseBase success(Object data){
ResponseBase responseBase = success();
responseBase.setData(data);
return responseBase;
}
public static ResponseBase error(int code,String message){
ResponseBase responseBase = new ResponseBase();
responseBase.setCode(code);
responseBase.setMessage(message);
return responseBase;
}
public static ResponseBase error(String message){
ResponseBase responseBase = new ResponseBase();
responseBase.setCode(10000);
responseBase.setMessage(message);
return responseBase;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
controller层中的映射通常使用(@RequestMapping
、@GetMapping
、@PostMapping
)进行映射,Get和Post分别是两种http的请求方式。
在此项目中,我们对bookController层添加了几个映射,如"add","findBookId"等等。
注意的是,在代码前需要添加注释:
@RestController
5、连接数据库
在main文件夹里的resources文件里面,其中application.propertier文件里
写如下:
spring.datasource.url=jdbc:mysql://localhost:3306/library(数据库URL)
spring.datasource.username=root(你自己的用户名)
spring.datasource.password=(密码)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver