1.新建一个空项目
2.在空项目中,新建Spring项目,勾选Spring web和MySQL Driver
2.1 注意java版本要改为17,包名删除掉 .demo
2.2 勾选Spring web和MySQL Driver
tips:将”压缩空的中间软件包“前的√去掉,这样视图好看一些
3.配置起步依赖
配置MybatisPlus、Druid、lombok依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
如果没有符合的可以去Maven官网https://mvnrepository.com/寻找对应依赖
4.修改application.properties类型为yml
4.1 直接重构文件名为yml,图标为绿叶子即成功
4.2 配置端口 80,每一个冒号后面都要有空格,不然会报错
server:
port: 80
4.3 配置数据源
spring:
dataSource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/表名?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&AutoReconnect=true&serverTimezone=Asia/Shanghai
username: 自己数据库用户名
password: 数据库密码
4.4 配置框架技术相关配置
table-prefix: 表名前缀
id-type: 配合表中主键自增长使用
log-impl: 开启MP运行日志
mybatis-plus:
global-config:
db-config:
table-prefix: t_
id-type: auto
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
tips: 在yml文件中写的时候,idea有时候会给提示,有时候不会给,估计是idea的问题,没有就只能自己打了,注意结构和冒号后的空格,以及大小写也要区分,不然一定会报错。
5.利用lombok开发实体类
5.1新建domain.类名,类名自定义和对应数据库相关即可
5.2 类上加注解@Data,自动配置所有的Getter&Setter等方法,快捷键Ctrl+F12查看
5.3 加注解@TableName(value = "表名"),连接到对应表
5.4 在类中定义表中所有的变量,均定义为private,变量名最好和表中字段相同,且表中字段名不要有下划线,不然测试时返回的永远是null
6.整合MybatisPlus,开发数据层接口,进行测试
6.1 新建接口dao.实体类名Dao
6.2 加入注解@Mapper
6.3 整合MybatisPlus,类后继承BaseMapper,按Ctrl+F12,查看所有方法
public interface 类名Dao extends BaseMapper<类>
{
}
7.整合MybatisPlus开发业务层接口
7.1 新建接口service.I实体类名Service
7.2 整合MybatisPlus,继承IService<实体类名>,按Ctrl+F12,查看所有方法
7.3 如果有其他需要的方法,在接口中定义即可,一般为Boolen型,因为业务层都是逻辑关系
public interface I实体类名Service extends IService<实体类名>
{
Boolean 功能名(实体类名 对象名);
}
7.4 业务层实现
7.4.1 在service包下新建包impl,新建类:实体类名ServiceImpl
7.4.2 加入注解@Service,扩展ServiceImpl和继承业务层接口
7.4.3 注入数据层接口,加上注解@Autowired
7.4.4 将业务层接口中定义的其他方法加入进来,return的是某值 > 0,表示操作成功
@Service
public class 实体类名ServiceImpl extends ServiceImpl<实体类名Dao, 实体类名> implements I实体类名Service
{
@Autowired
private 实体类名Dao stationDao;
@Override
public Boolean 方法(实体类名 对象名)
{
return stationDao.对应方法(对象名) > 0;
}
}
最后,记得去测试,注入业务层,测试对应的功能即可
8.基于Restful开发表现层
表现层调用业务层的接口
8.1 新建controller.实体类名Controller
8.2 类上加注解@RestController,@RequestMapping("/实体类名s")
地址是rest风格
8.2 将业务层注入
8.3 对于增删改查的4个功能,对应的注解分别是@PostMapping,DeleteMapping("{id}"),@PutMapping,@GetMapping("{id}")
8.3.1 增和改:在方法参数中需要添加注解@RequestBody,用于是处理HTTP请求参数的注解,将请求的json或xml转化为bean对象或Map对象
8.3.2 删和查:在方法参数中需要添加注解@PathVariable,用于接收请求路径中占位符的值
8.4 实现每个功能的方法类型设置为R,返回的也是R型的结果,这是为了前端人员好调用、看懂,需要写前后端数据协议,即写一个返回值结果模型类,用于后端与前端进行数据格式统一
每个方法返回的值均为new R()
@GetMapping
public R getAll()
{
return new R(true,stationService.list());
}
/***
* 新增
* @param station
* @return
*/
@PostMapping
public R save(@RequestBody Station station) throws IOException
{
if(true) throw new IOException();
return new R(stationService.save(station));
}
/**
* 修改
*/
@PutMapping
public R update(@RequestBody Station station)
{
return new R(stationService.modify(station));
}
@DeleteMapping("{id}")
public R delete(@PathVariable Integer id)
{
return new R(stationService.removeById(id));
}
@GetMapping("{id}")
public R getById(@PathVariable Integer id)
{
return new R(true,stationService.removeById(id));
}
}
9. 返回值结果模型类(前后端数据协议)
9.1 在controller下新建utils.R类,类上添加注解@Data
9.2 定义三个变量用于:是否查询成功、获得的数据、返回异常信息
private Boolean flag;
private Object data;//返回的数据类型是不定的,所以这里需要定义为Object型
private String msg;
9.3 编写方法:查询成功:flag = true,数据为空:data = null,msg:异常信息
public R(Boolean flag)//是否查询成功
{
this.flag = flag;
}
public R(Boolean flag,Object data)//是否查询成功、查询到的数据是否为空
{
this.flag = flag;
this.data = data;
}
public R(String msg)//查询失败时,返回异常信息
{
this.flag = false;
this.msg = msg;
}
10.异常处理器
10.1 新建utils.ProjectExceptionAdvice类
10.2 新建R型的拦截所有异常信息的方法,增加注解@ExceptionHandler,加入形参exception
10.3 使用e.printStackTrace,它是一个非常简单但非常有用的诊断异常的工具,有助于跟踪异常,告诉你发生了什么以及代码错误发生在哪里
10.4 返回new R(msg),这里要调用到R里的第三个方法
//作为springmvc的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice
{
//拦截所有的异常信息
@ExceptionHandler
public R doException(Exception exception)
{
exception.printStackTrace();
return new R("服务器故障");
}
}
11.在postman中测试整个项目所有的功能
在测试之前一定要先启动springboot项目,点击运行
11.1 查找功能测试:
11.1.1 查找所有
11.1.2 按照id查找
11.2 删除功能测试:
11.3 增加功能测试
11.3.1 键入地址
11.3.2 选择Body
11.3.3 点击raw,选择json格式
11.3.4 输入表中各个字段名和设置的对应的值,点击send即可测试
11.4 修改功能测试
大致都与增加功能测试相同,将POST改为PUT,指定你要修改的某条记录,所以要多设置一个id的值,点击send测试即可。
{
"id": 4,
"整型字段名": 1,
"varchar型字段名": "字段值",
}
该篇是对于后端开发的一些工作流程的总结,仅涉及到一点点原理,没有系统学过SSM,可以找时间补充一下。
学习内容来自黑马李老师,感谢。
=========================================================================
2022.3.26
总结一下最近实现自定义功能的开发流程
1.首先确定自己需要的具体功能
2.看数据层有没有可以调用的方法,如果没有,就需要自己写一个方法,注意mysql语句要写对
3.看业务层有没有可以直接调用的方法,如果没有,就自己写,在实现类里,完成逻辑操作,调用到数据层接口
4.控制层中传入参数,调用业务层接口
5.如果每层都有直接可以调用的方法,比如按照条件删除,那就去控制层写逻辑操作。