遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。
能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
提供定制化的启动器Starters,简化Maveni配置,开箱即用。
纯)java配置,没有代码生成,也不需要XML配置。
提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。
setting里配置maven
现在来看controller的用途
啥是热部署
在properties文件里配置devtools
如果我们使用idea还需要继续设置
新版automake这个设置在 settings advance setting 下面
关于控制器相关概念
来两个注解
前后端分离一般用@RestController
@RestController返回的数据呢,就是以文本形式交给前端,前端再对数据进行处理,后端不会涉及到前端的内容
默认就是get请求
那前端传参数进来我如何接收呢?
post请求参数可以放到url后面也可以放到请求body里面
如果是参数特别多,比如注册的使用场景,那我们要封装一个软件工程里的实体概念,搞个user类接受的参数就是类的属性
此外名称类型也要保持一致
静态资源设置
默认有映射
前端要是传头像的话要用到文件上传
在前端要有对应的表单,enctype改成formdata
上传功能:将用户传来的文件存储到web服务器的本地
我们可以打印出动态的路径,这个路径是idea自己分配的,打包部署之后他的路径就不会变化了,想要方便调试的话,可以把path改成固定的C盘,我们怎么存储它呢?我们自定义一个方法,然后把文件和路径传递给这个方法,在这个方法里面,我们做一个判断,创建一个JAVA的file这个对象,通过这个对象,我们把路径传给他,判断这个路径到底存不存在?如果不存在的话(第一次运行的时候upload肯定不存在,但是request.getServletContext()这个服务器运行路径是存在的,就创建这个upload目录 然后再创建一个文件,这个文件对象代表我们最终要存储的文件,把路径和文件原始名称加上拼接出完整路径,利用multipartfile对象的transferto方法把网络上传过来的文件存到上面的完整路径当中
那用户如何访问自己上传的图片呢
改下静态资源的路径
但是记得把这个删掉啊不然后续访问static下的图片就不行了
这里注意把静态路径模式参数删了,否则会默认去找静态资源而不是上传的资源
拦截器
判断用户是否登录,用来拦截请求,减少冗余代码
前端请求先到拦截器
怎么用呢,先定义java类,然后继承handleInterceptor
返回真就会通过然后继续下一个拦截器
拦截器要用要先注册
restful风格 前端后端交互时遵循的一种原则,使用此理念设计出来的接口api更加简洁
安全性就是get就不该修改服务器数据
幂等性就是n此请求和一次结果得一样
编程时如何设计成restful风格呢?
后端会有很多个人开发,比如订单模块的接口 ,给到文档swagger动态生成给到前端
可以读到我们后端写的控制器还有里面的方法
可以通过注解来
mybatisplus解决面向对象与关系型数据库不匹配的问题,orm帮我们完成对象到数据库中记录的映射
连接池来申请多个连接提高连接效率
我们的查询要怎么编写代码啊??
首先添加依赖,配置数据库,
编写controller文件夹里的内容如此一来我们可以用浏览器来测了
用户访问这个方法后我们要找到 mapper去操作 数据库
1. 搞个实体entity编写实体类
2.创建mapper文件夹来放数据库相关的操作接口
(为啥是接口呢?mybatis不需要具体的实现类,只需要方法声明,所有操作由mybatis来完成)
返回的泛型user就已经设计orm了
这里的sql语句回去找propeties里面的数据库配置,查询出来会自动帮你放到list里
3.在启动类里把接口文件夹扫描一下
那其中具体的原理是什么呢?
我们会想着到controller里面实现接口里的方法,不能直接new接口
spring会自动帮我们实例化usermapper,帮我们管理usermapper的实例,内部通过动态代理的方式帮我们生成了实现类,并且继承了或者说实现了接口,然后帮我们实现数据库传递的方法
控制器里想用mapper怎么办呢?首先声明定义一个属性,然后spring有个功能就是用注解autowired注入mapper实例化出的对象
然后调用接口里的方法就行
前后端分离的项目如何转成json格式呢?
插入操作
然后你我们用mybatitsplus改改
想用这个,有没有人能说一下答辩要是老师要你当场改写增删改查怎么搞??
如果表名和实体名不一致也不要紧
在实体类上告诉它它对应的表是哪个?
还有别的注解可以设置成自增啥的
多表查询这么搞??查用户的时候看用户还有那些订单?
mybatis提供了四个注解
把id作为参数传给ordermapper的selectbyid使用
条件查询
分页查询
当数据库有成千上万条的时候,不可能一下全部搞出来,当前端点了下一页的时候再继续查询
先做一个分页拦截器