初识框架 MyBatis

1:什么是框架?

框架是一个提供了可重用的公共结构的半成品,它为我们构建新的应用程序提供了极大的便利,不仅提供了可以拿来就用的工具,更重要的是,它还提供了可重用的设计。

框架技术: 是一个应用程序的半成品 提供可重用的公共结构 按一定规则组织的一组组件

分析优势 :不用再考虑公共问题 专心在业务实现上 结构统一,易于学习、维2护 新手也可写出好程

2:当前的主流框架

2.1 :Struts2框架:以WebWork优秀的设计师思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的基于MVC设计模式实现的Web应用程序框架。它引入了几个新的框架特性,从逻辑中分离出横切关注点的拦截器,减少或消除配置文件,贯穿整个框架的强大表达式语言,支持可变更和可重用的基于MVC模式的便签API等,Struts2充分利用了从其他MVC框架学到的经验和教训,是整个框架更加清晰、灵活。

2.2:Hibernate框架:是一个优秀的持久化的框架,负责简化讲对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作;Hibernate通过简单配置和编码就能替代JDBC烦恼的程序代码。Hibernate已经成为当前主流的数据库持久化框架,被广泛应用在实际框架中。ORM,简化数据库操作 DAO层

2.3:Spring框架:是一个开源框架,它的目标是使现有的JavaEE技术更容易使用和养成良好的编程习惯。它是一个轻量级的框架,渗透了JavaEE技术的方方面面。它主要作为依赖注入容器和AOP实现存在,它还提供声明式事务、对DAO层的支持等简化开发的功能。Spring可以很方便地与SpringMVC、Struts2、MyBatis、Hibernate等框架集成,大名鼎鼎的 SSM集成框架指的就是基于 SpringMVC+Spring+MyBatis技术框架,使用这个集成框架使我们的应用程序更加健壮、稳固、轻巧和优雅,这也是当前最流行的Java技术框架。

2.4: Spring MVC框架:是Spring框架提供的构建Web应用程序的全功能MVC模块,属于Spring Framework的后续产品,已经融合在Spring Web Flow里面,是结构最清晰的MVC Model2的实现。它拥有高度的可配置性,支持多种视图技术,支持多种视图技术,还可以进行定制化开发,相当灵活。此外,Spring整合SpringMVC 可以说是无缝集成,是一个高性能的架构模式。现在已越来越广泛地应用于互联网应用程序中。

2.5:MyBatis框架:是一个优秀的数据持久层框架,在实现类和SQL语句之间建立映射关系,是一种半自动化得ORM实现。其封装性要低于Hibernate,性能优越,并且小巧、简单易学,应用也越来越广泛。DAO层 动态SQL

3:什么是持久化? ORM

持久化是程序数据在瞬时状态和持久状态间转换的过程

ORM(Object Relational Mapping) 编写程序的时候,以面向对象的方式处理数据 保存数据的时候,却以关系型数据库的方式存储 ORM解决方案包含下面四个部分 在持久化对象上执行基本的增、删、改、查操作 对持久化对象提供一种查询语言或者API 对象关系映射工具 提供与事务对象交互、执行检查、延迟加载以及其他优化功能    

4:MyBatis简介

MyBatis前身是iBatis,本是Apache的一个开源的项目 官方网站 http://mybatis.org ORM框架 实体类和SQL语句之间建立映射关系

特点 基于SQL语法,简单易学

能了解底层封装过程

SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

方便程序代码调试

5:搭建MyBatis开发环境

使用MyBatis的开发步骤

5.1:下载mybatis-3.2.2.jar包并导入工程

5.2:编写MyBatis核心配置文件(sqlMapConfig.xml)

5.3:创建实体类-POJO

5.4:DAO层-SQL映射文件(mapper.xml)

5.5:创建测试类

读取核心配置文件mybatis-config.xml ;创建SqlSessionFactory对象,读取配置文件;

创建SqlSession对象 ;调用mapper文件进行数据操作

6:MyBatis框架优缺点

优点 :与JDBC相比,减少了50%以上的代码量 最简单的持久化框架,小巧并简单易学 SQL代码从程序代码中彻底分离,可重用 提供XML标签,支持编写动态SQL 提供映射标签,支持对象与数据库的ORM字段映射

缺点 :SQL语句编写工作量大,对开发人员有一定要求 数据库移植性差

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目

7:MyBatis基本要素

MyBatis的核心对象 :SqlSessionFactoryBuilder SqlSessionFactory SqlSession

mybatis-config.xml  系统核心配置文件

mapper.xml  SQL映射文件

8:核心接口和类的结构

初识框架 MyBatis

9:核心对象

SqlSessionFactoryBuilder: 用过即丢,其生命周期只存在于方法体内 可重用其来创建多个 SqlSessionFactory 实例 负责构建SqlSessionFactory,并提供多个build方法的重载

SqlSessionFactory :SqlSessionFactory是每个MyBatis应用的核心 作用:创建SqlSession实例 作用域:Application 生命周期与应用的生命周期相同 单例 存在于整个应用运行时,并且同时只存在一个对象实例

SqlSession 包含了执行SQL所需的所有方法 对应一次数据库会话,会话结束必须关闭 线程级别,不能共享。

注意:在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建

SqlSession的获取方式 :SqlSession的两种使用方式

9.1:通过SqlSession实例直接运行映射的SQL语句

9.2:基于Mapper接口方式操作数据

10:小结

非集成环境下的最佳实践

SqlSessionFactoryBuilder 用过即丢,推荐作用域范围:方法体内

SqlSessionFactory 最佳作用域范围:应用的全局作用域 生命周期与应用的生命周期相同

SqlSession 线程级 一个request请求期间

11:系统核心配置文件

mybatis-config.xml 系统核心配置文件

configuration 配置

properties    可以配置在Java 属性配置文件中

settings    修改 MyBatis 在运行时的行为方式

typeAliases   为 Java 类型命名一个别名(简称)

typeHandlers   类型处理器

objectFactory   对象工厂

plugins   插件

environments   环境

environment   环境变量

transactionManager  事务管理器

dataSource   数据源

mappers    映射器

配置properties元素

配置properties元素的两种方式 通过外部指定的方式(database.properties),实现动态配置 直接配置为xml,实现动态配置:

1:通过外部指定的方式(database.properties),实现动态配置 配置properties的resource属性

2:直接配置为xml,实现动态配置 配置property的name和value

3:若两种方式同时都用了,那么哪种方式优先? 配置properties的resource指定 配置property的name和value

结论:resource属性值的优先级高于property子节点配置的值

typeAliases元素

类型别名 仅仅只关联XML配置,简写冗长的Java类名

environments元素

environments元素  表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上 。                                                                    子元素节点:environment,是必须指定其中一个为默认运行环境(通过default指定)每个SqlSessionFactory实例只能选择一个运行环境

初识框架 MyBatis

transactionManager-事务管理器

语法:<transactionManager type="[ JDBC | MANAGED ]" />

dataSource dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源 有三种内建的数据源类型

语法:<dataSource type=" [UNPOOLED | POOLED | JNDI]" />

示例:<dataSource type="POOLED">  

    <property name="driver" value="${driver}"/>      

       <property name="url" value="${url}"/>     

       <property name="username" value="${user}"/>     

   <property name="password" value="${password}"/>

</dataSource>

mappers元素

映射器,定义SQL映射语句 须在配置中引用mapper映射文件

方式一:使用类资源路径获取资源

<!-- 将mapper映射文件加入到系统核心配置文件中 -->

<mappers>   

   <mapper  resource="cn/smbms/dao/user/UserMapper.xml"/>

</mappers>

方式二:使用URL获取资源

<mappers>         

   <mapper url="file:///E:/sqlmappers/UserMapper.xml"/>       

   <mapper url="file:///E:/sqlmappers/ProviderMapper.xml"/>

</mappers>

 

总结:初识框架 MyBatis