初始MyBatis

第一章初始MyBatis

1.1框架技术

1.1.1为什么学习框架技术

适用PPT模板制作文档的优点如下:
(1)不用考虑布局.排版等问题,提高了效率
(2)可以专心于PPT内容,使演讲的质量更有保障
(3)新手也可以制作很专业的幻灯片演讲稿
使用架构建项目也是基于这样的考虑.当确定使用哪个技术的优势如下
(1)不用考虑公共问题,框架演已经帮我们做好了
(2)可以专心于业务逻辑,保证核心业务逻辑的开发质量
(3)结构统一,便于学习和维护
(4)框架中集成了前人的经验,可以帮助新手写出稳定.性能优良而且结构优美的高质量程序

1.1.2框架的概念

1.1.3主流框架的介绍

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

2.Hibernate框架
Hibernate是一个优秀的持久化框架,负责简化将对象数据存到数据库中,或从数据库中读取数据并封装到对象的工作.Hibernate通过简单配置和编码即可代替JDBC烦琐的程序代码.Hibernate已经成为当前的数据库持久化框架,被广泛应用

3.Spring框架
Spring也是一个开源框架.它的目标是使现有的JavaEE技术更容易使用和促进良好的编程习惯.它是一个轻量级的框架,渗透了JavaEES技术的方方面面.它主要作为依赖注入容器和AOP实现存在,还提供了声明式事务,对DAO层的支持等简化开发的功能.SpringMVC+Spring+MyBatis的技术框架,使用这个集成将使我们的应用程序更加健壮.稳固,轻巧和优雅,这也是当前流行的Java技术框架,我们将在后续课程中学习

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

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

1.2MyBatis介绍及其环境搭建

1.2.1数据持久化概念

1.2.2MyBatis框架及ORM

  1. MyBatis框架简介
    MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SOL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。

MyBatis的前身是iBatis, 本是Apache 的一-个开源项目,2010 年这个项目由Apache Software Foundation迁移到了Google Code, 并改名为MyBatis。2013 年迁移到Github。

MyBatis官网: http://mybatis.org
Github: https://github.com/mybatis。

2.什么是ORM
ORM (Object/Relational Mapping)即对象/关系映射,是种数据持久化技术。 它在对象模型和
关系型数据库之间建立起对应关系,并且提供了种机制, 通过JavaBean 对象去操作数据库表中的数据,如图1.4所示。
在这里插入图片描述
在实际开发中,程序员使用面向对象的技术操作数据,而当存储数据时,使用的却是关系型数据库,这样造成了很多不便。ORM 在对象模型和关系数据库的表之间建立了一座桥梁。有了ORM,程序员就不需要再使用SQL语句操作数据库中的表使用API直接操作JavaBean对象就可以实现数据的存储、查询、更改和删除等操作。MyBatis 通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。

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

1.2.3MyBatis环境搭建

1下载需要的jar文件
在这里插入图片描述
2部署jar文件
3创建MyBatis核心配置文件configuration.xml
4创建持久化类(POJO)和SQL映射文件
5创建测试类

1.2.4MyBatis框架的优点及其适用场合

  1. MyBatis框架的优点
    (1)与JDBC相比,减少了50%以上的代码量。
    (2) MBatis是最简单的持久化框架,小巧并且简单易学。
    (3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里。从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
    (4)提供XML标签,支持编写动态SQL语句。
    (5)提供映射标签,支持对象与数据库的ORM字段关系映射。
  2. MyBatis 框架的缺点
    (1) SQl语句的编写工作量较大.对开发人员编写SQL语句的功底有一定要求。
    (2) SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
  3. MyBatis框架适用场合
    MyBais专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,如互联网项目,那么MyBatis将是不错的选择.

1.2.5技能训练

1.3MyBatis的基本要素—核心对象

基于以上内容,我们对MyBatis有了初步认识,下面正式介绍一下MyBais的三个基本要素,
➢核心接口和类。
➢MyBatis 核心配置文件(mybatis- config xml)。
➢SQL 映射文件(mapper xml)。
有如
下面首先介绍MyBatis的核心接口和类,如图1.19所示。

(1)每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。
(2)首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建该对象。
(3)然后获取SqlSessionFactory对象,该对象实例可以通过SqlSssionFactoryBuilder对象来获待,
(4)有了SqlSessionFactory 对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全包含议数据库为背景的所有执行SaL操作的方法。可以用该实例来直接执行已映射的SQL语句。

1.3.1SqlSessionFactoryBuilder

  1. SqlSessionFactoryBuilder 的作用
    SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供了多个build()方法的重载.如
    由于方法参数nviroment和poperties都可以为nall.那么去除重复的,真正的重载方法其实只
    有如下三种
    ➢build(Reader reader . String enionmnent, Porpeties poperties)
    ➢build(InpultSteten inuStrem. String enirommene, Properties popertis)
    ➢build(Configuration config)
    通过上述分析,发现配置信息可以以三种形式提供给SslssionFactoryBuilder的build()方法,分别是InpuSteam(字节流)。Reader (字符流). Configuration (类), 由于字节流与字符流都属于读取配置文件的方式,所以从配置信息的来源就很容易想到构建一个SqlSessionFactory有两种方式:读取XML配置文件构造方式和编程构造方式。在本章中,我们采用读取XML配置文件的方式来构造SaISessionFactory.

  2. SqlSessionF actoryBuilder的生命周期和作用域
    siSesionFactoryBuidler的最大特点是:用过即丢。-旦创建了SalSssionFactaoy 对象之后,这
    个类就不再需要存在了,因此SsesioactoryBuildlere的最佳范围就是存在于方法体内.也就是局部变量而已。

1.3.2SqlSessionFactory

  1. SqlSessionFactory 的作用
    SqlSessionFactory简单的理解就是创建SqlSession 实例的工厂。所有的MyBatis应用都是以
    SqlSessionFactory实例为中心SqlSessionFactory 的实例可以通过SqlSessionF actoryBuilder对象来获得,有了它之后,顾名思义,就可以通过SqISessionFactory 提供的openSession()方法来获取SqlSession实例,如图1.21 所示,
    在这里插入图片描述
  2. SqlSessionFactory 的生命周期和作用域
    SqiSessionFactory对象一旦创建就会在整个应用运行过程中始终存在。没有理由去销毁或再创建它,并且在应用运行中也不建议多次创建SqlSessionFactory.因此SqlSessionFactory的最佳作用域是Application. 即随着应用的生命周期-同存在。那么这种” 存在于整个应用运行期间,并且同时 只存在一个对象实例”的模式就是所谓的单例模式(指在应用运行期间有且仅有一个实例).
    下面就需要把获取SqlSessionFactory 的代码进行优化最简单的实现方式就是放在静态代码块下,以保证stisesioFactory对象只被创建一次实现步骤如下。

1.3.3SqlSession

  1. SqlSession的作用
    SqlSession是用于执行持久化操作的对象,类似于JDBC中的Conmection,它提供了面向数据库执行SQL命令所需的所有方法,可以通过SaSession实例直接运行已映射的SOL语句如图1.2所示。

  2. SqlSession 的生命周期和作用域
    正如其名,SqlSession 对应着一次数据库会话。 由于数据库会话不是永久的,因此SISession的生命周期也不应该是永久的。相反,在每次访问数据库时都需要创建它(注意:并不是说在SqlSession里只能执行一次SQL,是完全可以执行多次的,但是若关闭了SqISession, 那么就需要重新创建它)。创建SqISession 的地方只有-一个,那就是SqlSessionFactory对象的openSession()方法。需要注意的是:每个线程都有自己的SqlSession 实例,SqISession 实例不能被共享,也不是线程安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。关闭SqISession是非常重要的。必须要确保SqISession在finally语句块中正常关闭。可以使用下面的标准方式来关闭:
    Sq1Session session = sqlSessionFactory .openSession() ;
    try {
    // do work
    } finally {
    session.close();
    }
    3.SqlSession的两张使用方式
    (1)通过SqlSession实例来直接执行已映射的SQL语句
    在这里插入图片描述
    (2)基于mapper接口方式操作数据。修改上一个演示示例,步骤如下。
    创建绑定映射语句的接口UserMapper java, 并提供接口方法getUserList().如示例8所示。
    该接口称为映射器。注意:接口的方法必须与SQL映射文件中SQL语句的ID 一一对应。

1.3.4技能训练

1.4MyBatis的基本要素—核心配置文件

1.4.1myBatis-config.xml文件结构

mybatis config xml文件需配置一些基本元素需要注意的是,该配置文件的元素节点是有先后
顺序的,其层次结构如图1.23所示。
在这里插入图片描述
从图1.23中可看出configuration元素是整个XML配置文件的根节点其角色就相当于是MyBais的总管,MyBatis 所有的配置信息都会存放在它里面。MyBatis 还提供了设置这些配置信息的方法。

1.properties元素
2. settings 元素
settings元素的作用是设置一些非常重要的设置选项,用于设置和改变MyBatis 运行中的行为。
常用配置如表1-7所示。
在这里插入图片描述
3.typeAliases元素
4.environments元素
5.mappers元素

1.4.2DTD文件的引入

1.DTD文件的位置
者两个DTD文件在mybatis-3.2.2.jar里,已压缩包形式介意打开,DTD文件路径为mybatis-3.2.2\org\apache\ibatis\builder\xml
2.新增XML Catalog
在这里插入图片描述
在这里插入图片描述

1.4.3技能训练

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值