文章目录
Spring
ioc:
Aop:
注入的方式:
设计模式:
SpringMVC
1.工作流程:
2.开发流程
2.1 导入pom依赖
2.2web.xml中添加核心类配置,DispatcherServlet,指向框架
Springmvc.xml的配置文件
2.3配置Springmvc.xml
配置驱动包扫描
3.常用的注解
4. springmvc怎么返回数据
Mybatis
Mybatis简介:
MyBatis 的优点和缺点
优点:
缺点:
关联关系的配置
mapper.xml配置的常用标签
Mybatis中的二级缓存默认关闭的
重点:
总结
Spring
ioc:
控制反转、依赖注入
由原来程序员手段创建对象的权利,转交给Spring容器;
优点:代码的维护性提高了
Aop:
面向切面
代理=目标+通知
将核心业务与非核心分离,使程序员将精力都放在核心业务中;
定义切面:* *..*.*service.*del(..)
定义通知:@around
注入的方式:
控制反转、依赖注入
由原来程序员手段创建对象的权利,转交给Spring容器;
优点:代码的维护性提高了
Aop:
面向切面
代理=目标+通知
将核心业务与非核心分离,使程序员将精力都放在核心业务中;
定义切面:* *..*.*service.*del(..)
定义通知:@around
注入的方式:
面向切面
代理=目标+通知
将核心业务与非核心分离,使程序员将精力都放在核心业务中;
定义切面:* *..*.*service.*del(..)
定义通知:@around
set注入
构造注入:
自动装配:byname,bytype
@autowised @resource
new xmlclasspathapplication("springContext.xml");
设计模式:
单例模式:Bean 默认为单例模式
原型模式:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate,
工厂模式:BeanFactory 就是简单工厂模式的体现,用来创建对象的实例;
代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成技术;
SpringMVC
1.工作流程:
单例模式:Bean 默认为单例模式
原型模式:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate,
工厂模式:BeanFactory 就是简单工厂模式的体现,用来创建对象的实例;
代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成技术;
1.工作流程:
1.1.DispatcherServlet:接受到浏览器端发送的所有请求
1.2.HandlerMapper处理器映射器:找到@requestMapping对应值
1.3.HandlerAdapter处理器适配器:适配对应的方法调用执行
1.4.modelAndView模型视图对象:方法的返回值
1.5.viewResolver解析模型视图对象,得到view,返回给浏览器用户展示;
2.开发流程
2.1 导入pom依赖
2.2web.xml中添加核心类配置,DispatcherServlet,指向框架 Springmvc.xml的配置文件
2.3配置Springmvc.xml
配置驱动包扫描
2.1 导入pom依赖
2.2web.xml中添加核心类配置,DispatcherServlet,指向框架 Springmvc.xml的配置文件
2.3配置Springmvc.xml
配置驱动包扫描
重点:配置本地资源视图解析器
添加静态文件映射
2.4controller层,正常开发即可
要通过@controller标记当前类被spring所管理
写方法:@requestMapping
方法会有返回值:“bookList” --> /bookList.jsp
3.常用的注解
@controller @requestMapping
@getMapping @putMapping
@deleteMapping @postMapping
@responseBody-返回json数据 @requestBody-接受json数据
@pathvariable @requestParam
4. springmvc怎么返回数据
转发:"forword:/list"
重定向:"redirect:/list"
Mybatis
Mybatis简介:
ORM Object reference Mapping,数据库层面的框架
@controller @requestMapping
@getMapping @putMapping
@deleteMapping @postMapping
@responseBody-返回json数据 @requestBody-接受json数据
@pathvariable @requestParam
转发:"forword:/list"
重定向:"redirect:/list"
Mybatis
Mybatis简介:
ORM Object reference Mapping,数据库层面的框架
ORM Object reference Mapping,数据库层面的框架
MyBatis 的优点和缺点
优点:
(1) 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在
XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重
用。
(2) 与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
(3) 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库
MyBatis 都支持)。
(4) 能够与 Spring 很好的集成;
(5) 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系
组件维护。
缺点:
(1) SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定
要求。
(2) SQL 语句依赖
关联关系的配置
一对一:association javatype
一对多:Collection oftype
mapper.xml配置的常用标签
if/for
用于解决特殊字符转义的,没有CDATA的话,> < & 等会被当成HTML标签,而不是sql语句的组成部分;
Mybatis中的二级缓存默认关闭的
二级缓存:Mapper级别的缓存,默认关闭
一级缓存:session级别的缓存,默认就是开启的;
一级缓存:
基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flflush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓 存。
二级缓存:
二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap
存储,不同在于其存储作用域为
Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射 文件中配置 ;
对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所
有 select 中的缓存将被 clear 掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。
重点:
(1) 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重 用。 (2) 与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; (3) 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持)。 (4) 能够与 Spring 很好的集成; (5) 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系 组件维护。
缺点:
(1) SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定
要求。
(2) SQL 语句依赖
关联关系的配置
一对一:association javatype
一对多:Collection oftype
mapper.xml配置的常用标签
if/for
用于解决特殊字符转义的,没有CDATA的话,> < & 等会被当成HTML标签,而不是sql语句的组成部分;
Mybatis中的二级缓存默认关闭的
二级缓存:Mapper级别的缓存,默认关闭
一级缓存:session级别的缓存,默认就是开启的;
一级缓存:
基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flflush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓 存。
二级缓存:
二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap
存储,不同在于其存储作用域为
Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射 文件中配置 ;
对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所
有 select 中的缓存将被 clear 掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。
重点:
一对一:association javatype
一对多:Collection oftype
mapper.xml配置的常用标签
if/for
用于解决特殊字符转义的,没有CDATA的话,> < & 等会被当成HTML标签,而不是sql语句的组成部分;
Mybatis中的二级缓存默认关闭的
二级缓存:Mapper级别的缓存,默认关闭
一级缓存:session级别的缓存,默认就是开启的;
一级缓存:
基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flflush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓 存。
二级缓存:
二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap
存储,不同在于其存储作用域为
Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射 文件中配置 ;
对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所
有 select 中的缓存将被 clear 掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。
重点:
if/for
用于解决特殊字符转义的,没有CDATA的话,> < & 等会被当成HTML标签,而不是sql语句的组成部分;
二级缓存:Mapper级别的缓存,默认关闭
一级缓存:session级别的缓存,默认就是开启的;
一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flflush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓 存。 二级缓存: 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射 文件中配置 ; 对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所 有 select 中的缓存将被 clear 掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。
重点:
#{...}与${...}传参的区别
#{}是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; Mybatis 在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止 SQL 注入,提高系统安全性。
#传递参数会自带引号
S不带引号:存在SQL注入的问题,但是也有优点,可以用来做动态列/动态SQL
上述的不同,也就决定了$存在SQL注入的风险
UserMapper.xml 前提uid是varchar
select * from user where uid = #{uid} uid='abc' or uid is not null
select * from user where uid = ''abc' or uid is not null'
select * from user where uid = ${uid} uid='abc' or uid is not null
select * from user where uid = 'abc' or uid is not null
select * from user where uid = #{uid}
UserMapper.execute("select * from book")
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。



