mbatis详细解释
1.1 映射器
是mybatis中最重要的文件
一级缓存:
作用域 sql语句执行完
二级缓存:整个xml文件
sqlsession中的俩个接口selectOne,selectList
1.5 MyBatis基本练习
mybatis实现给映射器传递多个参数
1.6Mybatis中的占位符
#{}相当于JDBC中的问好(?)动态传入参数
${}是为sql片段(字符串)占位,将传过来的SQL片段直接拼接在占位符在的位置
演示:动态传入字段
1.7动态SQL
在项目中
1.8Mybatis缓存
1.8 MyBatis**缓存**
程序经常要调用的对象存在内存中,方便其他使用时可
以快速嗲用,不必去数据库或者其他持久化设备中查
询,主要是提高查询性能1.8.1 MyBatis**的一级缓存**
一级缓存的作用域是SqlSession。同一个SqlSession中
执行相同的sql查询(相同 的SQL和参数),第一次会去查
数据库并写在缓存中,第二次会直接查询缓存
MyBatis默认开启一级缓存
1.8.1.1 一级缓存失效的情况
1.SqlSession**不同**
2.SqlSession**相同,查询条件不同**
3.SqlSession**相同,两次查询之间执行了增删改操作**
原因说明:每个增删改标签都有默认清空缓存配置:
flushCache="true",不过这是默认的是一级和二级缓存都
清空
在MyBatis中有flushCache\userCache这两个配置,
1)当为select语句时:
flushCache默认为false,表示任何时候语句被调用,
都不会去清空本地缓存和二级缓存
2)当insert\update\delete语句时
flushCache默认为true,表示任何时候语句被调用,
都会导致本地缓存和二级缓存被清空
useCache属性在该情况下没有4.SqlSession**相同,手动清除了一级缓存**
1.8.1一级缓存失效的原因
1.SqlSession不同
2.SqlSession相同,查询条件不同
3.SqlSession相同,俩次查询之间执行了增删改查操作
原因说明:每个增删改查标签都有默认清空缓存配置: flushCahe="true"不过
这是默认的是一级和二级缓存都清空
在mybatis中有flushCache\userCache这个俩个配置
1)当为select语句时:
flushCahe 默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存
2)当insert\update\delete语句时
flushCache默认为**true**
缓存失效的4个条件
1.2.4测试
通过测试发现:
若不关闭第一次查询时的回话对象,二级缓存中没有数据.,所以又去一级缓存中取数据
只有回话关闭或者提交后,一级缓存中的数据
1.2.5
由测试结果得
session.cleareCache()手动清除缓存后,只是清除了一级缓存,不影响二级缓存,因为在session.close()的时候,已经将一级缓存的数据保存在了二级缓存中
1.Spring框架
1.1 什么是spring
spring是分层的javaSe以及javaEE应用于全栈轻量级开元框架,以及JDBC控制控制反转和AOP(面向切面编程)为核心,提供了表现层SpringMVC框架和持久层springJDBC以及业务事物管理等众多企业级应用技术,还能整合开元世界中众多著名的第三方框架和类库。逐渐成为使用最多的javaEE企业级开源框架
1.2. Spring发展历程(了解)
1.2 Spring框架的优势(了解)
1.4 程序中的耦合
1.4.1 什么是程序的耦合
耦合行,也叫耦合度,是对模块间关联程度的度量,耦合的强弱取决于模块间接口的复杂性,调用模块的方式以及通过界面传送的数据多少,模块间的耦合度是指模块之间的依赖关系,包括控制关系,调用关系,数据传递关系
总结: 在软件中.耦合指的是对象之间的依赖关系,对象之间
1.4.2 工厂模式解耦
在开发中可以将三层(表现层,业务层,持久层)的对象都使用配置文件配置起来,当启动服务器加载应用时,可以通过工厂读取配置文件,根据配置文件中配置将这些对象创建出来
可以通过[工厂+接口+]
1.4.3 程序耦合演示
编写步骤
1.4.4 使用工厂模式解耦
1.创建config.properties文件
将业务中new方法创建的东西,定义在文件中,通过BeanFactory读取配置
,生产出东西
1.4.5
1.4.5 使用springIOC解偶
1.4.6 IOC实现解偶总结
在初始化一个spring容器时,spring解析指定的xml文件,当解析到其中的标签时,会根据标签中的class属性指定的全路径,若见到该类并将该对象存入map中管理,通过反射创建该类对象,并将该类对象存入内置的map中关联其中K就是该标签的ID class就是该对象的value之后然后通过我给他的getBean方法来从容器中获取对象时,又根据传入的条件,在内置的 map中寻找是否有匹配的key,有则该将K中保存对象返回没有,则抛出异常。。
1.这些可以获取多个id的,并得到的将是同一对象,
2可以配置多个类型相同bean,
3不可以配置di名字个相同的Bean。
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
1.5 Spring IOC
被成为控制反转
问题一: 谁控制谁,控制什么
问题二: 为何是反转,那些方面反转了
又称为依赖注入
问题一: 谁依赖谁
问题二:为什么需要依赖
问题三:谁注入了谁
问题四:注入了什么
控制反转和依赖注入区别和联系
1.6 Spring IOC 容器
IOC是spring的核心,也可以成为spring容器, Spring通过IOC来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期
spring通过XML或java注解中的信息获取那些对象需要实例化
1.7 Spring Bean定义
由Spring IOC容器管理的对象称为bean,bean根据spring配置文件中的信息创建
spring配置文件支持俩种格式,即xml文件格式和properties文件格式
properties配置文件主要以key_value键值对 形式存在. 只能赋值,不能
进行其他操作, 适用于简单的属性配置
XML配置文件格式是树形结构, XML配置文件结构清晰
1.工厂模式
测试工厂模式实例化bean
public class TestBeacFactory{
@Test
pulic void testMyBeanFactort(){
}
}
SpringMVC框架