1、MyBatis的缓存
一级缓存 默认开启 sqlsession级别
二级缓存 手动开启 sqlsessionFactory级别
二级缓存开启的条件:
(1)在核心配置文件中设置全局配置属性 cacheEnabled="true" (默认)
(2)在映射文件中设置标签<cache>
(3)二级缓存必须在sqlsession关闭或提交之后才有效果
(4)查询的数据所转换的实体类类型,必须实现序列化的接口
二级缓存失效的情况:
二次查询之间执行了任意的增删改,一级二级缓存同时失效
2、MyBatis的逆向工程
正向工程:先创建实体类,由框架负责根据实体类生成数据库
逆向工程:先创建数据库,框架负责根据表生成---Java实体类、Mapper接口、Mapper映射文件
逆向工程配置文件:文件名必须是generatorConfig.xml
使用MyBatis的分页插件实现分页功能:
(1)需要在查询功能之前开启分页
PageHelper.startpage(int pagenum,int pagesize)
(2)在查询功能之后获取分页相关信息
PageInfo<Emp> page=new PageInfo<>(list,5)
list表示分页数据,5表示当前导航分页显示的数量
3、SpringBoot2
是整合spring的一个框架,简化spring技术栈
Web开发导入依赖
<dependency>
<groupId>
<artifactedId>spring-boot-starter-web</artifacted>
</dependency>
@SpringBootApplication:标记是一个SpringBoot应用
执行在main中执行SpringApplication.run(类名.class.主函数参数)
编写Controller
@Controller @ResponseBody(表明方法的返回值直接给到浏览器)两个@等价于@RestController
application.properties 存储配置信息
添加spring-boot-maven-plugin插件,自动将项目打包成jar包
配置类里面使用@Bean标注在方法上,给容器注册组件,默认单实例,配置类本身也是组件
ProxyBeanMethods
代理bean的方法=true 全模式 Full模式
代理bean的方法=false 轻量级 Lite模式
@Import({User.class}):往容器自动导入组件,默认组件的名字是全类名
@Conditional:将满足条件的组件注入
@ImportResource(资源路径)
配置绑定
(1)@Component(只有在容器中的组件才能使用SpringBoot的功能)
@ConfigurationProperties(perfix=前缀名)
(2)@EnableConfigurationProperties(Car.class)
功能一:开启Car属性配置功能
功能二:把Car这个组件自动注册到容器中
xxxAutoConfiguration-->组件-->xxxProperties里面拿值-->application.properties
4、配置文件
.properties .yaml
yaml基本语法:
key:_value;注意value前面有个空格,用_代替,同下
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab、只允许使用空格键
缩进的空格数不重要,只要相同层级的元素左对齐即可
#表示注释
' '与" "表示字符串内容,会被转义/不转义
eg:
字符串 输出结果
'aa\nbb' aa\nbb
"aa\nbb" aa
bb
person:
userName:_张三 这里一个 '_' 代表一个空格
age:_18
列表表示
interests:[1,2]
或interests:
-1
-2
字典表示
score:{key:_value}
或score:
key:_value
Configuring the Annnotation Processor
添加此依赖会在配置文件时进行提示
<artifactId>spring-boot-configuration-processor</artifactId>
5、静态资源访问
(1)静态资源目录:/static or /public or /resources or /META-INF/resources
访问:当前项目根路径+静态资源名
原理:静态映射/**
请求进来先去找Controller能不能处理,不能处理的请求交给静态资源处理器,若找不到 404
(2)静态资源访问前缀
.yaml配置文件
spring:
mvc:
static-path-pattern:_/res/** 注:一个 '_' 代表一个空格
所以新的访问方式为:当前项目+static-path-pattern+静态资源名
@Pathvariable(路径变量)
@RequestHeader(获取请求头)
@RequestParam(获取请求参数)
@Cookievalue(cookie值)
@RequestAttribute(request域属性)
@RequestBody(请求体)
@MatrixVariable(矩阵变量)--------->在路径中
eg:/cars/low=34;brand=byd,yd 矩阵变量
thymeleaf
基本语法:
变量取值 ${}
选择变量 *{}
消息 #{}
链接 @{}
片段表达式 ~{}
6、文件操作
文件上传:单文件/多文件
<div class="form-group">
<lable for="exampleInputFile">照片集</lable>
<input type="file" name="photos" mutiple[表示多文件上传]>
</div>
MutiplepartFile:自动封装上传的文件
文件保持
if(!headerImg.isEmpty())
{
String originalname=headerImg.getOriginalFilename(); //单文件
headerImg.transferTo(new File("地址"+originalname));
}
if(photo.length>0) //多文件
{
for(MutipartFile photo:photos)
{
if(!photo.isEmpty())
{
String originalname=photo.getOriginalFilename(); //单文件
headerImg.transferTo(new File("地址"+originalname));
}
}
}