Spring,Springmvc,MyBatis

MyBatis 就是将数据库层的操作代码进行了封装

mybatis.xml配置文件

mybatis的基本实现

sql语句拼接 

SET语句:

trim去除指定内容的前缀后缀

foreach,标签,便利list集合

list集合的遍历

最终形成  id  in (1,2,3,4,5,6,7,8,9)  类似这种形式

map、数组的便利,插入操作

最终形成, values  (1,2) ,(1,3) ,(1,4) ,(1,5)

include标签,在sql语句中引入别的sql语句

实体类中含有对象的动态拼接语句

实体类中含有 list对象,其list中装着其他另外一个对象的 拼接方式

resultMap  N+1的方式 实际就是多了select属性

MyBatis 的缓存,

同一个sqlSession 对象,操作同一个sql资源,是从缓存中读取的,

不同的sqlSession对象,操作同一个sql资源,都会缓存,资源浪费

解决办法:使用factory缓存

开启后流程:

使用sqlSession对象操作数据库的时候,会现在sqlSession自己的缓存中查看是否有现成的数据

,有就返回,没有则继续查看factory的缓存中是否拥有,有返回,没有则去数据库中获取资源,

将资源返回的同时,在sqlSession的缓存中存储,当sqlSession被 commit或者close的时候,会将缓存

的数据刷入到factory中

Mybatis 的ThreadLocal的封装

ThreadLocal对象中存储的数据只在当前线程内有效

解决问题是,不同线程获取的factory对象是相同的,但是获取的sqlSession对象是不同的

注解方式查询:

Mybatis的运行原理

SpringIOC  也叫控制反转, 控制:容器创建对象的过程,反转: 将对象返回给调用代码的过程

核心原理: 创建一个容器对象,将责任链中需要解耦的对象全部存储到容器中,由本来的直接创建

变成现在的从容器中获取,如果需要对对象进行升级,对容器中的对象进行替换就可以

SpringIOC创建对象3种方式:

1.1.无参构造器配置 bean

1.2.有参数构造器

2.1静态工厂的方式 配置bean

2.2动态工厂方式配置bean

3.1属性注入方式

3.2 属性注入方式的 依赖注入

SpringAOP的学习

实现不修改源代码的功能扩展, AOP依赖IOC,要扩展的切点,必须被spring管理

第一种方式:schema-based的方式

前置通知

后置通知

环绕通知

异常通知

配置xml文件,将通知交给spring管理,定义切点方法

第二种方式:AspectJ 方式

配置XML文件

ASPECTJ 方法二

需要扫描你的通知的AOP包

SpringAOP帮助我们实现代码功能的扩展是使用了代理设计模式

静态代理:程序员自己编写的

动态代理:代理对象是动态生成的,

1. JDK 动态代理,

实现了 InvocationHandler  接口 ,有代理对象,代理方法,代理对象接受的实参

底层基于反射实现的

   2.cglib动态代理 : 必须继承真实对象,是真实对象的子类

创建一个实现了MethodInterceptor接口的java类,并且复写方法intercept

开始cglib动态代理

Spring的事务管理TX

Spring整合了mybatis之后,SqlSession对象由我们自己创建变成了spring管理,实现事务管理

的方法有2种,1.  从Spring中获取被管理的mybatis对象,然后使用对象自己完成事务管理代码的编写   ----- 编程式事务

2.让Spring进行事务的管理,我们只需要声明哪些代码需要被事务管理-----声明式事务

DataSourceTransactionManager

事务的7种传播行为   propagation

事务隔离的5种级别

事务的回滚操作

事务的操作处理

Spring的5种自动注入的属性

default,默认使用全局的注入的方式,在beans标签中配置,

no ,不使用自动注入

constructor  根据构造器的形参类型进行匹配

配置文件的注入

Spring中Bean的scope属性

1.singletom 单利,同一个id无论获取多少次都是同一个对象

2.prototype,在获取getBean的时候,就算是同一个id每次获取的对象都不一样

3.request每次请求重新实例化

4.session每个会话对象内,对象是单例的

5.application 在application对象内饰单例的

Spring的注解

Spring的常见注解及其作用:

1. @Component 创建类对象,相当于配置<bean/>

bean的ID默认为类名首字母小写,也可以指定ID,例如@Component("stu")

2. @Service 与@Component功能相同.

2.1 写在ServiceImpl类上.

3. @Repository 与@Component功能相同.

3.1 写在数据访问层类上.

4. @Controller 与@Component功能相同.

4.1 写在控制器类上.

5. @Resource(不需要写对象的get/set)

5.1 java中的注解

5.2 默认按照byName注入,如果没有名称对象,按照byType注入

5.2.1 建议把对象名称和spring容器中对象名相同

6. @Autowired(不需要写对象的get/set)

6.1 spring的注解

6.2 默认按照byType注入.

7. @Value() 获取properties文件中内容

8. @Pointcut() 定义切点

9. @Aspect() 定义切面类

10. @Before() 前置通知

11. @After 后置通知

12. @AfterReturning 后置通知,必须切点正确执行

13. @AfterThrowing 异常通知

14. @Arround 环绕通知

注意:

使用注解,一定要在配置文件中声明注解扫描

<context:component-scan base-package="包名路径"></context:component-scan>

SpringMVC  就是用来实现 servlet和其他层解耦的,出现了controller层

1.首先在web.xml中 配置,加载springMVC 配置文件的方式

2.配置springmvc.xml文件

SpringMVC之获取请求的数据

restFul形式

请求Key名和形参不一致的时候

获取数组

响应ajax 请求数据 响应回去直接就是数据,不是字符串

SpringMVC之响应

请求转发:forward:默认可以不写,/代表当前项目   如果不写forward   自定义视图解析器会添加前缀和后缀

重定项:redirect: 必须写, /也代表当前项目,

view对象的响应方式

ModelAndView方式

SpringMVC上传,设置form表单的属性为   multipart/form-data

设置JSP跳转页面的公共方法

拦截器的实现

拦截器的执行顺序

SpringMVC 的核心4大组件

DispatcherServlet : servlet分发器,整个SpringMVC框架的入口

HandlerMapping:寻找URL所请求的HanDlerMethod,验证合法性

HandlerAdapter:实际调用HandlerMethod的组件

viewResovler:视图解析器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值