springBoot是Pivotar团队开发的一套全新的框架,不像mybatis-,只是一个插件,其设计目的是用来简化spring应用的初始搭建和开发过程。
spring程序有什么缺点:
依赖配置繁琐(以前的人解决依赖冲突是十分费劲的)
编写配置文件或者说做项目的过程中需要配置的地方是很多的。
boot程序有什么优点:
起步依赖(大大简化了搭建项目的依赖配置,还能有效的避免依赖冲突的出现)
自动配置(将大家基本都一样,每个项目都要的配置都配置好了)
辅助功能(例如内置了一个服务器,…)
学习完这一篇:必须要理解和掌握的就是boot框架整合第三方技术的思路.
https://start.aliyun.com
简介中说的那三个优点具体就是由这四个内容实现的
分三块
手动引入该技术相关的stasrter, 并需要指定版本, 最后使用时在boot的配置文件中做组要的配置.
com.baomidou
mybatis-plus-boot-starter
3.4.3
(作业: 查询mp在boot中可以做那些配置)
com.alibaba
druid-spring-boot-starter
1.2.6
# 德鲁伊数据源配置
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
username: root
password: root
service层接口的定义与数据层接口的定义具有较大的差别, 注意做区分
业务层的方法名注重业务名称, 而数据层的方法名注重数据库相关的操作.
举个例子
service层的接口类, 要继承一个指定范型的类
IService<范型>
于是, 大量通用的业务方法, 就不用自己手动写了
全部继承ok
而业务层的实现类需要两步, 第一步自然就是先实现对应的业务接口
第二步就是, 继承一个指定两个范型的类
ServiceImpl<对应的dao层类, 对应的domain类>
这就好了, 业务方法一个没写, 通用的已经全封装好了.
我们只需要为特定的业务写方法的重载或者追加就行了.
Representation state transitions
表现形式状态转换
说白了, 就是一种全新的访问网络资源的一种方式
例如
传统的访问写法是这样的
http://localhost/user/getById?id=1
http://localhost/user/saveUser
而Rest风格是这样的
http://localhost/user/1
http://localhost/user
优点就出来了
一: 书写简化
二: 隐藏访问行为, 无法通过地址就猜出是对资源进行何种操作
使用rest风格访问资源时需要使用行为动作区分对资源的操作类型
例如
http://localhost/user
如果是GET: 表示查询全部用户信息
如果是POST: 表示添加用户信息
如果是PUT: 表示更新用户信息
而
http://localhost/user/1
如果是GET: 表示条件查询
如果是DELET: 表示条件删除
请求方式其实不止这四种
springMVC其实没有支持那么多
只支持八种, 常用的就是这四种
也就是说, 通过一个路径和一个请求方式
就可以确定要访问的资源
使用REST风格来访问资源就叫Restful
package com.itdong.service.impl;
import com.itdong.domain.User;
import com.itdong.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class UserServiceImpl implements UserService { //假设都不是页面跳转的业务, 都是回显信息
@Override
@RequestMapping(value = "/users",method = RequestMethod.GET)
@ResponseBody
public String getAll() {
return "查询操作";
}
@Override
@RequestMapping(value = "/users/{id}",method = RequestMethod.GET) //变量名要对应
@ResponseBody
public String getById(@PathVariable int id) { //表示参数来自路径变量
return "查询操作";
}
@Override
@RequestMapping(value = "/users",method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user) { //表示形参来自请求体
return "保存操作";
}
@Override
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String deleteById(@PathVariable int id) { //表示参数来自路径变量
return "删除操作";
}
@Override
@RequestMapping(value = "/users/",method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user) { //表示方法的参数来自请求体
return "更新操作";
}
}
以上案例重复的地方有
每个方法前的/user是大量重复的
解决方法:
将@RequestMapping注解提到类上
这样以来不用在路径中要参数的方法, 可以将@RequestMapping中的value拿掉.而需要路径参数的方法只用写后面的那一段.
以上的案例我们是假设所有方法都是回显消息, 不是跳转页面,所以
每个方法前都有 @ResponseBody 这个注解
解决方法:
可以将这个注解提上类前
就可以表示所有方法都是回显消息的方法了
而springMVC框架中, 如果一个业务POJO满足使用@ResponseBody 这个注解的条件
可以和@Controller注解合并为一个注解@RestController
既然@RequestMapping提上类了, 方法中也使用@RequestMapping制定路径参数和访问方式就不太优雅了.
其实, 方法上现在可以换一个注解
@方式名Mapping("/路径参数") //该括号内容不一样需要
这种就看起来就优雅多了, springMVC人家玩得多好~