Spring程序与SpringBoot程序对比
SpringBoot程序优点
- 起步依赖(简化依赖配置)
- 自动装配(简化常用工程相关配置)
- 辅助功能(内置服务器,......)
内嵌Tomcat
REST风格
REST简介
REST,表现形式状态转化
传统风格资源描述形式:
http://localhost/user/getById?id=1
http://localhost/user/saveUser
REST风格描述形式
http://localhost/user/1
http://localhost/user
优点:
- 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
- 书写简化
按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
- http://localhost/users 查询全部用户信息 GET ( 查询 )
- http://localhost/users/1 查询指定用户信息 GET ( 查询 )
- http://localhost/users 添加用户信息 POST (新增/保存)
- http://localhost/users 修改用户信息 PUT (修改/更新)
- http://localhost/users/1 删除用户信息 DELETE( 删除 )
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users,books,accounts......
基础配置
属性配置
1.修改属性
- 修改服务器端口
server.port=8081
- 设置日志相关
logging.level.root=debug
- 关闭运行日志图标
spring.main.banner-mode=off
2. yaml语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
- # 表示注释
注意属性名冒号后面与数据之间有一个空格
yaml文件格式http://xn--yaml-t85fs66fflkpnf
数据层开发
分页功能
分页操作需要设定分页对象Page
@Test
void textGetPage(){
IPage page = new Page(2,5);
userDao.selectPage(page,null);
}
IPage对象中封装了分页操作中的所有数据
- 数据
- 当前页码值
- 每页数据总量
- 最大页码值
- 数据总量
分页操作时在MyBatisPlus的常规操作基础上增强得到的,内部时动态的SQL语句。因此需要增强对应的功能,使用MyBatisPlus拦截器实现
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
业务层开发
快速开发
使用快速开发
- 使用MyBatisPlus提供有业务层通用接口(ISService<T>)与业务层通用实现类(ServiceImpl<M,T>)
- 在通用类基础上做功能重载或者功能增加
- 注意重载时不要覆盖原始操作,避免原始提供的功能丢失
表现层开发
1. 设计统一的返回值结果类型便于前端开发数据
2. 返回值结果类型可以根据需求自行定义,没有固定格式
3. 返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议
注解学习
名称:@RequestMapping
类型:方法注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径
范例:
@RequestMapping(value = "/users",method = RequestMethod.POST)
public String save(@RequestBody User user){
System.out.println("user save..."+user);
return "{'module':'user save'}";
}
名称:@PathVariable
类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:绑定路径参数与处理器方法形参之间的关系,要求路径参数名与形参名一一对应
范例:
@DeleteMapping("/users/{id}")
public String delete(@PathVariable Integer id){
studentMapper.deleteById(id);
return "删除成功";
}/*指定id删除用户*/
@RequestBody @RequestParam @PatchVariable
区别:
- @RequestParam 用于接收url地址传参或表单传参
- @RequestBody 用于接收 json 数据
- @PatchVariable 用于接收路径参数,使用{参数名称}描述路径参数
应用
- 后期开发中,发送请求超过1个时,以 json 格式为主,@RequestBody 应用较广
- 如果发送非 json 格式数据,选用@RequestParam 接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如一个,可以采用@PatchVariable 接收请求路径变量,通常用于传递id值
名称:@RestController
类型:类注解
位置:基于SpringMVC的RESTful开发控制器类定义上方
作用:设置当前控制类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能
范例:
@RestController
public class StudentController {
}
整合JUnit
名称:@SpringBootText
类型:测试类注解
位置:测试类定义上方
作用:设置JUnit加载的SpringBoot启动类
范例:
@SpringBootTest(classes = Application.class)
class SpringBoot01ApplicationTests {}
相关属性:classes:设置SpringBoot启动类
注意事项:如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的配置,也就是classes的设定
整合MyBatis
1. 核心配置:数据库连接相关信息(练什么?谁连?什么权限)
2. 映射配置:SQL映射(XML/注解)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: root