SpringBoot快速入门[带你快速搭建SSM](最全笔记)

目录

SpringBoot简介

Spring Boot概念

搭建普通项目的springboot工程

1、创建普通的maven工程 2、继承spring-boot-starter-parent

3.添加依赖spring-boot-starter-web 4、制作引导类Application

内置服务器

REST开发

RESTful快速开发

        @RestController

SpringBoot修改配置

基础配置

属性配置

整合第三方技术*

 SpringBoot - Junit

SpringBoot - Mybatis

SpringBoot - Mybatis Plus

SpringBoot - Druid(数据源)

整合第三方技术通用方式

整合SSMP案例

模块创建

实体层开发

数据层开发

分页

按条件查询

业务层开发

快速开发

表现层开发

基于Restful进行表现层接口开发

使用Postman测试表现层接口功能

表现层信息一致性处理(便于前端开发读取数据)

前后端协议联调


SpringBoot简介

springBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程

#Spring程序的缺点 *依赖配置繁琐 *配置繁琐

#SpringBoot程序优点 *起步依赖(简化依赖配置) *自动配置(简化常用工程相关配置) *辅助功能(内置服务器,.....)

注意事项:基于idea开发SpringBoot程序需要确保联网且能够加载到程序框架结构

springboot联网网址: https://start.aliyun.com https://start.spring.io

Spring Boot概念

Spring Boot 是spring公司的一个顶级项目, 和Spring Framework是一个级别的。

Spring Boot实际上是利用Spring Framework4自动配置特性完成。编写项目时不需要编写xml文件。发展到现在,Spring Boot已经具有很很大的生态圈,各种主流技术已经提供了Spring Boot的启动器。

搭建普通项目的springboot工程

1、创建普通的maven工程 2、继承spring-boot-starter-parent
3.添加依赖spring-boot-starter-web 4、制作引导类Application

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第1张图片

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第2张图片

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第3张图片

内置服务器

Tomcat(默认) Apache出品,粉丝多,应用面广,负载了若干较重的组件

Jetty 更轻量级,负载性能远不及Tomcat

undertow undertow,负载性能勉强跑赢Tomcat

内嵌Tomcat服务器是SpringBoot辅助功能之一

内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理

变更内嵌服务器思想是去除现有服务器,添加全新的服务器

REST开发

        REST(Representational State Transfer):表现形式状态转换

        传统风格:

             http://localhost/user/getById?id=1

             http://localhost/user/saveUser

        REST风格:

             http://localhost/user/1        

             http://localhost/user

优点:

   隐藏资源的访问行为,无法通过地址得知资源是何种操作

书写简化

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第4张图片

注意事项:上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范。描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,列如:users、books、accounts.....

        名称:@RequestMapping

        类型:方法注解

        位置:SpringMVC控制器方法定义上方

        作用:设置当前控制器方法请求访问路径

        范例:

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第5张图片

        属性:

                value(默认):请求访问路径

                method:http请求动作,标准动作(GET/POST/PUT/DELETE)

        名称:@PathVariable

        类型:形参注解

        位置:SpringMVC控制器方法形参定义前面

        作用:绑定路径参数与处理器方法形参间的关系,要求路径参数与形参名一一对应

        范例:

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第6张图片

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第7张图片

RESTful快速开发

        四种请求动作映射名称:@GetMapping @PostMapping @DeleteMapping @PutMapping

        类型:方法注解

        位置:基于SpringMVC的RESTful开发控制器方法定义上方

        作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,列如 @GetMapping对应GET请求

范例:SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第8张图片

        属性:value(默认):请求访问路径

        @RestController

        用来简化@Controller和@ResponseBody

SpringBoot修改配置

基础配置

  复制工程 原则

        保留工程基础结构

        抹掉原始工程痕迹

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第9张图片

属性配置

        SpringBoot默认配置文件application.properties,通过键值对配置对应属性

        修改配置

            修改服务器端口号:server.port=809

        SpringBoot提供了多种属性配置方式

             application.properties(起主导作用)

                 server.port=809 >

              application.yml(主流格式,推荐使用)

                        server: port:810 >

              application.yaml

                        server: port:811

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第10张图片

        核心规则:数据前面要加空格与冒号隔开

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第11张图片

port: 8080
##对象
user:
  name: itcast
  age: 19

##数组
likes:
  - game
  - music
  - sleep

likes2: [王者荣耀,生产者]

##对象数组
users:
  - name: admin
    age: 80
  - name: like
    age: 19

users:
  -
      name: admin
      age: 80
  - 
      name: like
      age: 19

        获取配置文件中的数据

	//读取yaml数据中的单一数据
	@Value("${country}")
	private String country1;

	@Value ("${likes[1]}")
	private String likes1;

	@Value ("${users[1].age}")
	private String age1;
	@Value ("${tempDir}")
	private String tempDir;

	//使用自动装配将所有的数据封装到一个对象Environment中
	@Autowired
	private Environment env;

		@GetMapping
	public String getById(){
		System.out.println ("springboot is runningTwo");
		System.out.println (country1);
		System.out.println (likes1);
		System.out.println (age1);
		System.out.println (tempDir);
		System.out.println ("--------------------------------");
		System.out.println (env.getProperty ("users[1].age"));
		return "springboot is runningTwo...";
	}

整合第三方技术*

 SpringBoot - Junit

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第12张图片

        名称:@SpringBootTest 类型:测试类注解

        位置:测试类定义上方 作用:设置JUnit加载的SpringBoot启动类

范例:

@SpringBootTest(classes = SpringbootJunit01Application.class)
class SpringBoot05JunitApplicationTests{}

        相关属性:classes:设置SpringBoot启动类

SpringBoot - Mybatis

        建立Spring Initializr工程时选择SQL下的:

        Mybatis Framework MySQL Driver

        核心配置:数据库连接相关信息(连什么?连谁?什么权限)

        映射配置:SQL映射(XML/注解)

在application.yml里配置
#2.配置相关信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis
    username: root
    password: 123

        定义数据层接口与映射配置

@Mapper
public interface StudentMapper{
 	@Select("select * from student")
    public List getAll();
}

        测试类中注入mapper接口,测试功能

@SpringBootTest
class SpringbootMybatis01ApplicationTests {

	@Autowired
	private StudentMapper sm;

	@Test
	void contextLoads() {
		sm.getById ().forEach (e-> System.out.println (e));
	}

}

        springboot整合mybatis降版本处理错误

url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC

SpringBoot - Mybatis Plus

        Mybatis-Plus 与 Mybatis 的区别

        导入坐标不同 数据层实现简化

        使用getById方法,实体定义要有主键、要有@TableId注解,才能使用MP的getById

        由于mybatis-plus是国内发布的,需要在pom.xml中导入对应的坐标,若版本太高可以切换

        https://mvnrepository.com/ 获取Mybatis-Plus坐标

		
			com.baomidou
			mybatis-plus-boot-starter
			3.5.3
		
#设置Mp相关的配置
mybatis-plus:
	global-config:
		db-config:
			table-prefix: tbl_

        数据层接口继承BaseMappe;

SpringBoot - Druid(数据源)

        结合Mybatis和MySQL一起使用

        https://mvnrepository.com 获取Druid坐标

配置数据源
    指定方式
spring:
  datasource:
    druid:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mybatis
        username: root
        password: 123
  变更Druid配置方式
spring:
    datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
      username: root
      password: 123
      type: com.alibaba.druid.pool.DruidDataSource

整合第三方技术通用方式

        导入对应的starter 根据提供的配置格式,配置非默认对应的配置项

整合SSMP案例

模块创建

        勾选SpringMVC和MySQL坐标 手动添加Mybatis-Plus和Druid的坐标 修改配置文件为yml格式 设置端口为809方便访问

实体层开发

        Lombok,一个Java类库,提供了一组注解,简化POJO实体类的开发(在pom.xml中加入如下配置)


		org.projectlombok
		lombok

不需要指定版本号,由SpringBoot提供版本

        通过@Data注解(包括get、set、toString、hashCode、equals方法),实现对实体类属性的封装 @NoArgsConstructor为无参构造函数 @AllArgsConstructor为有参构造函数

数据层开发

        导入Mybatis-Plus与Druid对应的starter

        为方便调试可以开启MybatisPlus的日志

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
分页

        分页操作是在MybatisPlus的常规操作上增强得到,内部是动态的拼写SQL,需要使用MP提供的拦截器

        创建一个类:config包下创建MpConfig类

@Configuration
public class MpConfig {

	@Bean
	public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1、定义Mp拦截器
		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor ();
        //2、添加具体的拦截器
		interceptor.addInnerInterceptor (new PaginationInnerInterceptor ());
		return  interceptor;
	}

}
按条件查询

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第13张图片

SpringBoot快速入门[带你快速搭建SSM](最全笔记)_第14张图片

业务层开发

        Service层接口定义与数据层接口定义具有较大区别,不要混用

1、selectByUserNameAndPassword(String username,String password);(数据层接口对应的名称)
2、login(String username,String password);(业务层接口对应的名称)
快速开发

        1、使用MybatisPlus提供有业务层接口(IService)与业务层通用实现类(ServiceImpl)

        2、在通用类基础上做功能重载或功能追加

        3、注意重载时不要覆盖原始操作,避免原始提供的功能丢失

//定义接口快速开发Service
public interface IUserService extends IService {

}
//定义接口实现类快速开发ServiceImpl
@Service
public class UserServiceImpl extends ServiceImpl implements IUserService {

}

表现层开发

基于Restful进行表现层接口开发

        基于Resultful制作表现层接口

        新增:POST 删除:DELETE

        修改:PUT 查询:GET

        接收参数

        实体数据:@RequestBody

        路径变量:@PathVariable

        数据库id由于是自增需要加指定的注解

	@TableId(value = "id" ,type = IdType.AUTO)
	private Integer id;
使用Postman测试表现层接口功能
表现层信息一致性处理(便于前端开发读取数据)

        设计表现层返回结构的模型类,用于后端与前端进行数据格式同意,也被称为前后端数据协议(建立在controller包下的util包)

@Data
public class R{
	private boolean flag;//true代表查询成功,false代表查询失败
    
    private Object data;//表示返回的数据
    
	public R(){

	}

	public R(boolean flag){
		this.flag=flag;
	}

	public R(boolean flag,Object data){
		this.flag=flag;
		this.date=data;
	}
}

前后端协议联调

        前后端分离结构中页面归属前端服务器

        单体工程中页面放置在resources目录下的static目录中(建议执行clean)

你可能感兴趣的:(SpringBoot,spring,boot,笔记,java)