springboot(2)从基础到项目创建:

1 springboot的基础篇:

1 快速上手Springboot:

springboot的设计目的是用来简化spring的应用的初始搭建和开发流程:

为啥在创建springboot时我们一定要联网那:原因是我们在创建springboot工程时要通过idea来访问这个网址

如果idea不能正常的联网的话我们要如何创建springboot项目那我们可以在spring官网的boot的主空间中找到spingboot的连接

如果我们访问的那个官网是外网万一他被屏蔽了或者是访问速度特别慢的的话我们应该如何创建那:

思考如何实现那:我们可以换一个网址换成阿里云的网址

但是上述的在官网创建或者是在阿里云创建我们都需要联网的:那我们不联网的情况下可以写吗:

思考在springboot创建的时候会出现上面的东西导致文件结构复杂那我们应该如何做那,我们可以直接把他删了也可以在设置中把他设置一下使它不用每次创建时都出现

把不想要的的工程忽略掉

1 入门案例解析:parent

springboot是如何实现它的简化的那以来的是下面的那几个东西:

parent定义了很多的配置文件但是这些配置文件并没有被parent使用那我们是通过什么来是用配置文件的那:

parent定义了许多版本是由谁在使用那:是由下面的依赖时用的

在依赖创建时我们就会在parnet中查找对应的以来的版本号(这样的作用是可以是我们在一个项目中没有版本冲突):

2 Starter:

一个starter就是一个包含了若干个坐标的pom文件(就是通过依赖传递来减少依赖配置的)

就是指的是我们可能在不写坐标的版本号时patent中也没有对应的依赖的版本号就会导致报错

1 导入一个starter相当于导入好几个坐标

对于之前的parent和starter都是简化配置的问题的对吗:(parent是通过继承deficencies(其中定义了许多依赖的版本号)是为了避免依赖冲突的问题) (而starter这是通过依赖传递的方式来简化配置):

思考我们要想程序运行起来光靠配置是不行的还要引入什么东西那:

3 引导类:

这个引导类指的就是以application结尾的那个类

不管我们是做spring的程序还是springMvc的程序最终都会运行出来一个spring容器的对象,所有的对象都以bean的形式交给spring容器管理;

那我们做springboot程序会不会没有这个spring这个容器那(不会):

为什么要引入内置服务器那,引入内置服务器有啥好处:

默认条件下我们扫描查询bean对象的方位是当前类以及他的子类

如果说将user放到他前一个包再次执行会发生什么那:会报错原因是我们没有规定他的扫描范围默认是当前包和他的子包:扫描不到上一个包中

在springboot中引导类是boot工程的执行入口,运行main方法既可以启动项目了,那我们的web服务器是谁启动的那:

我们boot程序启动起来并带上tomcat服务器最主要的是依赖于tomcat的注解来实现的

4 Tomcat的辅助功能:

思考我们之前不是把程序放到服务器中,那为什么现在可以将服务器放到程序中为啥那:

tomcat服务器是用java语言来写的,java语言靠的是对象来运行的,那我们就可以把这个对象交给spring容器中管

(如果我们想要去掉这个依赖的话我们应该如何做那:可以使用exclusions这个坐标来排除这个依赖)

排除之后我们可以引入一个新的服务器依赖

2 知识加油站:rest开发:

1 rest的简介:

就是表现形式状态转换

他有一个缺点就是不同种请求方式的rest风格描述形式是一样的:

那我们如何区分它们的那:

通过调用rest风格的请求行为来进行区分:

对于post和get和put和delete这写请求方式在原本rest分格下可以包含任何意思:例如get可以被规定为查询也可以被规定为新增或者是修改,删除的.... 但是一定要与你所合作的公司的规范一样它们说get是什么就是什么

但是在现在大家都默认他们是什么请求方式来:就是图上说的

还要注意的是rest的请求路径要在原本的基础上在尾部加s对吗

根据rest风格对资源进行访问称为restful

REST分格的入门案例:

2 restful的快速开发:

两者的区别:

3 boot的基础配置:

1 属性配置方法:

2

在resource中的properties中修改它的端口号:

我们一般在application.properties中写它的配置,如果我们想要修改属性的话我们可以使用key和value的方法来写:

思考这个配置文件:

如果我们想写别的配置的话,我们可与写吗,我们应该写啥呐,现在我们使用的是tomcat这个服务器我们可以配置这个文件,如果我们没有或者是配置别的服务器我们还可以用吗

就是这些配置会不会是基于特定的环境啊;

将运行时的spring换成其他的图片例如:我们该如何做那

main-banner-mode=off这个是关闭运行时的banner

第二个时将banner换成一个图片的话它只能识别图片上的文字将它替换原来的banner

上面的是将根路径的日志级别设置成debug的形式(这样的话在每次调试的时候都会生成日志)

如果它的日志级别换成error的话这样的话我们只在报错的时候会生成日志

我们平时的日志的默认级别是info

这个是给指定的包配置日志级别

如果不使用web服务器的话对应的文件的配置就不能运行那次是我们的属性就也不能运行了

如果我们针对不同的包进行不同的配置的话会使代码比较繁琐看的不清楚我们应该如何解决这一痛点呐:

我们可以使用boot属性配置格式的另一种application.yml

思考如果这三种配置文件共存谁生效呐:

配置文件加载的优先级:

boot中属性配置方式的优先级: properties>yml>yaml

在这三个属性配置中如果有相同的属性会出现加载的优先级覆盖问题如果没有的话全部留下来

在yaml的属性配置中打port是没有提示的那我们应该如何解决这一问题那:

属性提示消失解决方案:

最核心的原因就是 IDEA 没有将该文件正确识别为 Spring 配置文件 ,或者缺少了生成提示所需的元数据

yaml的数据书写格式:

第二种格式都不用加空格

读取yaml单一属性数据:

当前面的数据是一样的话我们如果想要修改的话我们会把他全部修改一下会比较繁琐我们应该如何解决那:

我们可以把相同的内容放到同一级下方便管理:

如果我们的属性中有很多的数据的话我们就要进行很多的读取会很繁琐那我们如何解决这一问题那

读取yaml全部属性数据:

使用Autowired来自动装配数据(把属性配置中的属性全部封装到对象env中)

那我们此时应该如何写那:

但是对于属性我们并不完全需要所有的属性,那我们可以只封装特定的属性吗:可以

如何实现呐:创建一个数据模型来封装yaml文件中的对应数据

我们要把它交给bean容器管理:使用@Component这个注解来管理

如果我们要指的加载的数据的话我们要使用的是@ConfigrationProperties这个注解

读取yaml引用类型属性数据:

你要的是"功能"就找 Spring (加注解);你要的是"数据"就找数据库 (不加注解)。

我们可以在这里面加一个prefix代表的是前缀

自定义对象封装数据:

整合第三方技术:

1整合junit:

我现在这个测试类换个地方还能用吗:

不能用了:为什么那:

此时如果你的测试类在引导类的包及其子包下我们不用管任何东西:(这里的引导类指的是application的哪个类):

我们如果把测试类放到com包下的话就会报错如何解决这一问题呐:

我们需要在springboottest的注解后面加上class=引导类的类名

为什么会有这样的现象那:

spring整合junit的话我们需要两个设定:1 RunWith(设置运行器)

2 ContextConfigration这个注解是指定我们对应的配置类和配置文件是哪一个:

就是我们注入的测试对象要是在spring中的bean对象,但是我们此时如果测试类换位置了就不能拿到他的bean对象了:

我们还可以如何解决这一问题那:

报错的原因是啥:

就是启动类要是从上往下(向下)进行的来查询,测试类是从向上搜寻的所以如果我们把测试类放到com包下测试类都找不到对方:

@SpringBootConfiguration其中这个属性是在启动类的子包下:

2 整合mybatis:

1 导入坐标

2 导入对应的数据库信息:

3 导入对应的实体类和数据库信息:

可以使用注解来写

springboot整合mybatis的常见问题:

我们在整合mybatis是把它的版本降下来的话有时候会导致sql语句乱码:

是服务器时区设置的问题:

注意这里是时区错误不是编码导致的错误我们可以根据报错的信息来判断是什么错误

如果是编码错误的话我们可以用下面的解决问题:

如果是时区错误我们可以使用下面的来解决问题:

还有就是上面的那个格式的name过时了在运行是会给出一个提示信息:

3 整合mybatisplus

但是在springboot的开发中我们找不到mybatis-plus的坐标:那我们应该如果做那:

我们可以使用阿里云的私服来创建这个springboot的项目:

还可以直接创建(根据原来的那个路径创建springboot项目这个项目中就包含mysql这一个坐标即可)然后我们可以在网上查找mybatis-plus坐标的 信息

此时我们就不用再Dao中进行注解来写sql语句了,只用继承一个类即可:

思考那我们这里面不写注解或者是xml文件时我们应该怎么办呐:

这个BookMapper接口中继承了许多的sql语句:

我们可以直接调用这个方法了在测试类中进行测试

但是此时会报错分析为啥呐:

原因此时我们的数据库的表名是tb_book:

但是我们的实体类是book与数据库表名不符导致报错:

我们应该如何解决那:

我们可以在yml中加上对于的映射:下面的作用是在所有的表前面加上一个前缀:

也可以用另一种方法可以在实体类的上面加上一个注解:

接下来进行测试

4 springboot整合Druid的数据库连接池

但是我们此时缺少坐标我们应该在官网找到druid的坐标导入:

接着导入数据库的配置

这里的数据库配置中type指的是数据库连接池的类型

我们还可以使用另一种配置方法:

这个是druid的专属配置:

这个方法与mybatis整合的方法一样

1 springbootSSMP整合案例:

1 创建模块:

现在的企业级开发通常是使用手机访问器前端服务器的,然后由前端服务起来访问后端服务器

我们也可以把后端的服务器做成各种各样的微服务,这前端在访问后端的服务器是

他是在不同的服务器上进行信息处理

为了方便:

实体类的快速开发:

使用lombok来简化实体类的开发:

数据层标注开发:

DAO的那个层面是和Mapper层面相同的作用

1 在数据层标注开发 进行开发的话我们首先要进行配置信息的添加(添加数据源durid和mybatis-plus数据库前面的内容)

在保存的时候会报错原因是:mybatis-plus默认我们的id是自己指定的,用的是雪花算法:但是我们想要用的是数据库id主键自增:

我们如何解决这一问题呐:

加上一个id-type:anto就可以了:

这个tb1_是加在数据库前面的就是不全数据库名的作用我们:如果没有的话就不用写:

但是我们只能看到数据结果不能看到执行的过程:这就涉及Mp的调试日志,那他如何开启呐:

我们需要在配置信息中添加这个配置:

stdOutImpl指的是标准输出方式:

这就是执行过程:

有了这个开启日志的方法我们就不太需要打印的操作我们只需要调用那个方法即可

分页查询:在mybaties-plus中我们没有办法直接将数据加到sql语句的后面:但是我们可以使用一个拦截器将数据加载到后面:

按照条件查询:

那我们如果在原来要条件查询的字段值,的这个字段值写错或者是没有值得的话我们应该怎么办呢

我们可以使用这种方法来解决这种问题;

那我们在springboot的SSMP整合案例:条件查询的功能如何实现:

最上面的是条件查询加分页查询,而下面的只有条件查询

业务层开发:

在测试类中定义一个测试模块:测试每个模块的正确性:

那我们如果要使用user对象的话我们要使用这个模块的话我们要将book对象全部换成user对象这样的话我们的改变量会比较大;

简化写作过程:

表现层业务开发:

表现层消息一致性的处理:

但是在这里面我们不能判断是否存在成功:

前后端调用(axios发送异步请求):

我们接下来要将拿到的信息展示在页面上:

1添加数据 之后我们可以关闭弹窗,重写加载数据:

但是我们在下一次打开表单时表单中依旧存在上一次存储的信息,为了保护他人的隐私我们应该如何做那

2 删除操作:

首先我们在删除操作时我们要根据对应的请求参数来删除接着在删除之后进行刷新,重写加载数据

那我们还可以创建一个提示框防止误删数据

row是行数据

3 修改数据:

上面只是起加载数据的作用 我们还没有完成修改

这里面有问题:

异常处理:

5 分页:

这样的话分页组件就完成了但是此时我们的点击下一个页面没有效果是为啥呐:

是因为我们再换页面并没有这些方法切换页面是的对应的数据没有展示出来:

6 分页功能的维护:

就是如果最后一页只有一个数据的话如果我们在删除这个数据的话他的上一页的数据也会被删掉我们如何修复那

7 按条件查询

由于它是跟着分页走的所以我们将他写的分页模块中;

动态查询

完结:

相关推荐
迈巴赫车主3 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
i220818 Faiz Ul4 小时前
动漫商城|基于springboot + vue动漫商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·动漫商城系统
海兰4 小时前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
Makoto_Kimur5 小时前
Java 打印模板大全
java·开发语言·排序算法
程序员榴莲5 小时前
Java(十)super关键字
java·开发语言
HAPPY酷5 小时前
Python高级架构师之路——从原理到实战
java·python·算法
ybwycx5 小时前
SpringBoot下获取resources目录下文件的常用方法
java·spring boot·后端
PrDf22Iw85 小时前
CPU ↔ DRAM(内存总线)的可持续数据传输带宽
java·运维·网络
代码改善世界5 小时前
【matlab初阶】matlab入门知识
android·java·matlab