MyBatis可以简化JDBC操作,实现数据的持久化。
ORM: Object Relational Mapping
person对象 person表
ORM: 概念,Mybatis是ORM的一个实现(类似的还有Hibernate), ORM可以使开发人员像操作对象一样操作数据库表。
开发MyBatis程序步骤:
1.配置mybatis
conf.xml:配置数据库信息和需要加载的映射文件
映射文件xxMapper.xml:增删改查标签
MyBatis重要组件
- Mapper配置:实体类Student.java-数据表student,XML或注解
- Mapper接口(动态代理):DAO接口(只需要写接口,不用写实现类,注意需要遵循约定)
Mapper接口在编写时需要遵循约定:
- 方法名和SQL配置文件(studentMapper.xml)中的id值必须相同
- 方法的输入参数,必须和SQL配置文件的parameterType的类型相同;
- 方法的返回值,必须和SQL配置文件的resultType的类型相同
MyBatis开发时的常用对象
- SqlSessionFactory:SqlSession工厂。通过SqlSessionFactory:SqlSession中的openSession()产生SqlSession对象。
- SqlSession:SqlSession对象(类似于JDBC中的Connection)
- Executor:MyBatis中所有Mapper语句的执行都是通过Executor进行的。
MyBatis四大核心对象
- StatementHandler(负责sql语句):数据库的处理对象
- PrameterHandler(负责sql中的参数):处理SQL中的参数对象
- Executor
- ResultSetHandler:处理SQL的返回结果集
MyBatis四大处理器
StatementHandler、PrameterHandler、ResultSetHandler、TypeHandler(类型转换器)
输入参数:parameterType
1.
1. #{}和${}的区别是什么(对于输入参数类型为简单类型(8个基本类型+String))?
a.#{任意值} ${value}
b.#{}会自动给String类型加上‘’(自动类型转换)、${}原样输出,但适合于动态排序(动态字段)
c.#{}可以防止SQL注入、${}不可以
2. #{}和${}的相同之处是什么?
a.都可以获取对象的值(甚至是嵌套类型对象)
若传入的参数是对象类型:#{属性名}、KaTeX parse error: Expected 'EOF', got '#' at position 8: {属性名} #̲{}是预编译处理,{}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值(PreparedStatement是操作数据库的);
Mybatis在处理 时 , 就 是 把 {}时,就是把 时,就是把{}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性。
Spring
IOC/DI:控制反转/依赖注入
目的:解耦合
IOC帮我们提供了一个工厂。1向工厂中注入对象;2从工厂中获取对象;
IOC可以让我们通过“配置的方式”来创建对象
AOP:面向方面编程
面向对象(OOP)的补充,不是替代。
以上OOP两个不足,可以通过AOP进行改进。
spring MVC执行流程?
1.用户发送请求到前端控制器DispatcherServlet
2.然后DispatcherServlet请求处理器映射器查找Handler
3.HanderMapping向Dispatcher返回Handler
4.HandlerMapping调用处理器适配器HandlerAdapter去执行
Handler
5.处理器适配器去执行Handler
6.Handler执行完给处理器适配器返回ModelAndView
7.处理器适配器给DispatcherServlet返回ModelAndView
8.DispatcherServlet请求视图解析器View resolver进行视图解析
9.视图解析器向DispatcherServlet返回view
10.DispatcherServlet进行视图的渲染
11.DispatcherServlet向用户响应结果
使用AOP的实际场景
日志中比如,没删除一条数据,就要写一个日志
安全统一校验
Spring用到了哪些设计模式?
- 工厂模式:创建bean、获取bean
- 单例模式/原型模式:创建bean时,设置作用域,singleton/prototype
- 监听模式:自定义时间发布,监听模式。如ApplicationListener,当某个动作触发时,就会自动执行一个通知。
- 责任链模式:AOP
- 策略模式:创建代理
SpringMVC
mybatis:jdbc
springmvc:servlet的封装
Spring Boot
最主要的功能:自动装配
以前(不用spring boot),需要自己配置框架的配置文件
spring, mybatis, ssm整合等情况,需要编写一大堆配置文件
如果使用Spring Boot, 则可以省略配置。好处:将开发重点放在业务逻辑上,而不是配置上。
自动装配的原理?约定由于配置(将一些配置功能,前置到源码底层实现好)
自动装配的应用时:@EnableautoConfiguration就是springboot提供自动装配的注解。