SSM轻量级框架预习第一至第四章

第一章MyBatis入门
框架技术的优势:
1. 不用在考虑公共问题,框架已经帮我们做好了
2. 可以专心于业务逻辑,保证核心业务逻辑的开发质量
3. 结构统一,便于学习和维护
4. 框架中继承了前人的经验,可以帮助新手写出稳定、性能优良而且结构优美的高质量程序

框架的定义:(Framework)是一个提供了可重用的公共结构的半成品。提供了可以拿来就用的工具,还提供了可重用的设计
框架使换乱的东西变得结构化(企业降低了培训成本和软件的维护成本)

主流框架:1.Struts2框架:清晰、灵活
2.Hibernate框架:主流的数据库持久化框架
3.Spring框架:开源
4.Spring MVC框架:拥有高度的可配制性,支持多种视图技术,还可进行定制化开发,相当灵活。是一个高性能的架构模式
5.MyBatis框架:是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现
SSM集成框架:是基于SpringMVC+Spring+MyBatis的技术框架,使用这个集成框架将使我们的应用程序更加健壮、稳固、轻巧和优雅

数据持久化:是将内存中的数据模型转换为存储模型,以及将存储模型转为内存中的数据模型的统称

MyBatis框架及ORM
MyBatis是一个开源的数据持久层框架【内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索】(其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置)
ORM:对象/关系映射(Object/Relational Mapping,ORM)是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据

基于ORM,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁。通过MyBatis,可以建立SQL关系映射,便捷地实现数据存储、查询、更改和删除等操作

MyBatis优点:
1. 与JDBC相比,减少了50%以上的代码量
2. MyBatis是最简单的持久化框架,小巧并且简单易学
3. MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,既降低耦合度,又便于统一管理和优化,还可以重用
4. 提供XML标签,支持编写动态SQL语句
5. 提供映射标签,支持对象与数据库的ORM字段关系映射
MyBatis缺点:
1. SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求
2. SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库

注:MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案

MyBatis的三个基本要素:
1. 核心接口和类
【SqlSessionFactoryBuilder ==>SqlSessionFactory==> SqlSession】
2. MyBatis核心配置文件(mybatis-config.xml)
3. SQL映射文件(mapper.xml)
SqlSessionFactoryBuilder作用:负责构建SqlSessionFactory,并且提供了多个build()方法的重载
从配置信息的来源去构建一个SqlSessionFactory有两种方式:读取XML配置文件构造方式和编程构造方式
SqlSessionFactoryBuilder的生命周期和作用域:
SqlSessionFactoryBuilder最大特点是用过即丢。一旦创建了SqlSessionFactory对象,这个类就不需要存在了,因此SqlSessionFactoryBuilder的最佳使用范围就是存在于方法体内,也就是局部变量

SqlSession的工厂——SqlSessionFactory
SqlSessionFactory的作用:
SqlSessionFactory就是创建SqlSession的实例工厂。所有的MyBatis应用都是以SqlSessionFactory实例为中心。SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获得

SqlSessionFactory的生命周期和作用域:
SqlSessionFactory对象一旦创建,就会在整个应用运行过程中使用存在。没有理由与销毁或再创建它,并且在应用运行中也不建议多次创建SqlSessionFactory。因此SqlSessionFactory的最佳作用域是Application,即随着应用的生命周期一同存在
单列模式(指在应用运行期间有且仅有一个实例):存在于整个应用运行期间,并且同时只存在一个对象实例的模式

使用SqlSession进行数据持久化操作
SqlSession的作用:是用于执行持久化操作的对象,类似于JDBC中的Connection。它提供了面向数据库执行SQL命令所需的所有方法,可以通过SqlSession实例直接运行已映射的SQL语句
SqlSession的声明周期和作用域
SqlSession对应着一次数据库会话,由于数据库会话不是永久的,因此SqlSession的生命周期也不是永久的。相反,在每次访问数据库时都需要创建它(并不是说在SqlSession里只能执行一次SQL,它是完全可以执行多次的,但是若关闭了SqlSession,那么就需要重新创建它)。创建SqlSession的方式只有一个,那就是使用SqlSessionFactory对象的openSession()方法。
关闭SqlSession是非常重要的,必须确保SqlSession在finally语句块中正常关闭。

SqlSession的两种使用方式:
1. 通过SqlSession实例来直接执行已映射的SQL语句
2. 基于mapper接口方式操作数据

MyBatis的核心配置文件
结构:

如何引入DTD文件:

第二章 SQL映射文件
SQL映射文件的几个顶级元素配置:
? mapper: 映射文件的根元素节点,只有一个属性namespace(命名空间)
作用:1.用于区分不同的mapper,全局唯一
2.绑定DAO接口,即面向接口编程
? cache : 配置给定命名空间的缓存
? cache-ref : 从其他命名空间引用缓存配置
? resultMap :用来描述数据库结果集和对象的对应关系
? Sql :可以重用的SQL块,也可以被其他语句引用
? Insert : 映射插入语句
? update :映射更新语句
? delete :映射删除语句
? select :映射查询语句

注:
MyBatis传入参数类型可以使Java基础数据类型,但是只适用于一个参数的情况,通过#{参数名}即可获取传入的值。若是多参数入参,则需要复杂数据类型来支持,包括Java实体类、Map,通过#{属性名} 或#{Map的key}来获取传入的参数值

SQL映射文件的根节点是mapper元素,需要指定namespace来区别于其他的mapper,保证全局北一;并且其名称必须跟接口同名,作用是保定DAO接口,即面向接口编程
SQL映射文件的select返回结果类型的映射可以使用resultMap或resultType,但不能同时使用
MyBatis的SQL语句参数入参,对于基础数据类型的参数数据,使用@Param注解实现参数入参;对于复杂数据类型的参数数据,直接入参即可
resultMap的association和collection可以实现高级结果映射

第三章 动态SQL
MyBatis 在SQL映射文件中可以使用灵活、智能的动态SQL来实现SQL映射。
u If+set:完成更新操作
u If+where:完成多条件查询
u If+trim:完成多条件查询(替代where)或者更新操作(替代set)
u Choose(when、otherwise):完成条件查询(多条件下选择其一)
u foreach:完成复杂查询,主要用于in条件查询中,迭代集合。其中最关键的部分就是collection属性,根据不同的入参类型,该属性值亦不同:
1. 若入参对象为一个List实例,collection属性值为list
2. 若入参对象为一个数组,collection属性值为array
3. 若入参对象为多个,需要把它们封装为一个Map进行处理

第四章 Spring核心
企业级应用是指为商业组织、大型企业创建并部署的解决方案及应用。
企业级应用绝不可能是一个个的独立系统。
2003年2月,Spring框架正式成为一个开源项目,并发布于SourceForge中
Spring是企业应用开发的“一站式”选择,贯穿表现层、业务层和持久层。并且Spring并不想取代那些已有的框架,而是以高度的开放性与他们无缝整合

Spring整体架构:
Spring两个主要目标:

1.让现有技术更易于使用
2.养成良好的编程习惯(或者称为最佳实践)

Spring原则:不重新发明轮子。已经有较好解决方案的领域,Spring绝不做重复性的实现

Spring框架由大约20个功能模块组成 六部分:Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation、Test

IoC/DI:
控制反转(Inversion of Control,IoC)也称为依赖注入(Dependency Injection,DI),是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度
依赖一般指通过局部变量、方法参数、返回值等建立的对于其他对象的调用关系
几乎所有的应用都有两个或更多的类通过合作来实现完整的功能

Spring AOP:
面向切面编程(Aspect Oriented Programming,AOP)是软件编程思想发展到一定阶段的产物,是对面向对象编程(Object Oriented Programming,OOP)有益的补充

给编程人员的感觉就是在原有代码乃至原业务流程都不改变的情况下,直接在业务流程中切入新代码,增加新功能,这就是所谓的面向切面编程
基本概念:
切面(Aspect):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象
连接点(Join Point):程序执行中的某个具体的执行点
增强处理(Advice):对连接点的特征进行描述,可以使用正则表达式。增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行
目标对象(Target object):被一个或多个切面增强的对象
AOP代理(AOPproxy):由AOP框架所创建的对象,实现执行增强处理方法等功能
织入(WeAVing):将增强处理连接到应用程序中的类型或对象上的过程
增强处理类型:前置增强、后置增强、环绕增强、异常抛出增强、最终增强等类型
说明:
切面可以理解为由增强处理和切入点组成,既包含了横切逻辑的定义,也包含了连接点的定义。面向切面编程主要关心两个问题,即在什么位置执行什么功能。Spring AOP是负责实施切面的框架,即由SpringAOP完成织入工作
Advice直译为“通知”,但这种叫法并不确切,在此处翻译成“增强处理”,更便于理解

你可能感兴趣的:(预习笔记)