初始MyBatis

1.1.2框架的概念

 框架(Framework)是一个提供了可重用的公告结构的半成品。它为我们构建新的应用程序提供了极大的便利。框架中凝集着前人的经验和智慧,使用框架,我们就站在了巨人的肩上。

1.1.3MyBatis框架介绍

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

1.2.1数据持久化概念

数据持久化是将内存中的数据模型转换为储存模型,以及将储存模型转换为内存中的数据模型的统称。例如,文件的储存、数据的读取等都是数据持久化的操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。

1.2.2MyBatis框架及ORM

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

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

  3. MyBatis是ORM解决方案
    基于ORM,MyBatis在对象模型关系数据库的表之间建立了一座桥梁,通过MyBatis建立SQL关系映射,以便捷地实现数据库的增删改查。

1.2.3MyBatis环境搭建

  1. MyBatis下载和部署jar包
    MyBatis的官网是http://mybatis.org,可以下载到最新的MyBatis,不过目前MyBatis官网在国内访问受限。访问github即可。

  2. 创建MyBatis核心配置文件configuration.xml
    MyBatis核心配置文件主要用于配置数据库连接和MyBatis运行时所需要的各种特性,包含了设置和影响MyBatis行为的属性。
    为了方便管理以后各框架集成所需的配置文件,故需在项目工程下新建Source Folder类型的resuces目录,并在此目录下添加MyBatis的核心配置文件.默认文件名为"configuration.xml". 但需要注意的是,为了方便在框架集成时更好地区分各个配置文件,我们一般将此文件名命名为"mybais cofin xml". 该文件需要配置数据库连接信息和MyBatis的参数。
    configuration.xml文件的几个常用元素作用如下。
    (1)cotigration配置文件的根元素节点。
    (2) poeties通过esouree属性从外部指定popeties 属性文件lastse poemnie), 该属性文件描述数据库连接的相关配置(数据库驱动,连接数据库的un数据库用户名数据库密码)位置也是在/esources目录下。
    (3) stins,设置MyBatis 运行中的一些行为,比如此处设置MyBais的log日志实现为LOG4J,即使用0实现日志功能”
    (4) enirorments:表示配置MyBatis的多套运行环境将SaL映射到多个不同的数据库上,该元素节点下可以配置多个environment子元素节点.但是必须指定其中一个默认运行环境(通过defaut指定)。
    (5) eniroment:配置MyBatis的一套运行环境, 需指定运行环境ID.事务管理.数据源配置等相关信息。
    (6) mappes:作用是告诉MyBatis去哪里找到SQL映射文件(该文件内容是开发者定义的映射SaL语句1.整个项目中可以有1个或多个SoL映射文件。
    (7) mape; mappers 的子元素节点,具体指定SOL映射文件的路径.其中resoure 属性的值表述了SOL映射文件的路径(类资源路径)。
    必须注意的是, mybatis confg xml文件的元素节点是有一定顺序的,节点位置若不按顺序排住,那么XML文件会报错。

  3. 创建持久化类(POJO)和SQL映射文件
    持久化类是指其实例状态需要被MyBatis持久化到数据库中的类。在应用的设计中,持久化类通常对应需求中的业务实体,MBais 一般采用P0J0编程模型来实现持久化类,与POJO类配合元成
    持久化工作是MyBatis最常见的工作模式。
    POJO (Plain Ordinay Java Obiec),从字面上来讲就是普通Java对象。POJO类可以简单地理解为符合JavaBean规范的实体类,它不需要继承和实现任何特殊的Java基类或者接口。JavaBean 对象的状态保存在属性中,访问属性必须通过对应的getter 和setter方法。

  4. 创建测试类
    在工程中加入JUnit4,创建测试类进行功能测试,并在后台打印出用户表的记录数。

1.2.3MyBatis框架的优缺点及适用场合

1.** MyBatis 框架的优点**
(1) 与JDBC相比,减少了50%以上的代码量。
(2) MyBatis 是最简单的持久化框架,小巧并且简单易学。
(3) MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化, 并可重用。
(4) 提供XML标签,支持编写动态SQL语句。
(5)提供映射标签,支持对象与数据库的ORM字段关系映射。

  1. MyBatis 框架的缺点
    (1) SQL语句的编写工作量较大,对开发人员编写soL语句的功底有一 定要求。
    (2) SQL语句依赖于数据库,导致数据库移植性差, 不能随意更换數据库。

  2. MyBatis 框架适用场合
    MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,如互联网项目 那么MBai将是不错的选择。

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

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

1.3.1SqlSessionFactoryBuilder

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

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

1.3.1SqlSessionFactory

1.SqlSessionFactory的作用
SlessionFactory简单的理解就是创建Stlssion 实例的工厂。所有的MyBatis应用都是以SaISessionf actory实例为中心Stlessionf actory的实例可以通过SasesioFatogoyBuilder对象来获得。有了它之后,顾名思义,就可以通过SqlSessionFactory提供的openSession1)方法来获取SqlSession实例。

  1. SalSessionFactory 的生命周期和作用域
    sesofeto对象旦创建 就会在整个应用运行过程中始终存在。没有理由去销毁或再创建它,并且在应用运行中也不建议多次创建Sisesonoactayo因此SlSessionFactory的最佳作用域是Applicacion,即随着应用的生命周期一同存在。 那么这种” 存在于整个应用运行期间,并且同时只存在一个对象实例 ”的模式就是所 谓的单例模式(指在应用运行期间有且仅有-个实例)。

1.3.3 SqlSession

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

1.SalSession的生命周期和作用域
正如其名,SqlSession 对应着一次数据库会话。 由于数据库会话不是永久的:并不是说在SqlSession生命周期也不应该是永久的。相反,在每次访问数据库时都需要创建它(注意i那么就需要重新创建它)。里只能执行一次SOL,是完全可以执行多次的,但是若关闭了SqISession()方法。创建SqlSession的地方只有一个, 那就 是SqlSessionFactory对象的openSession。
需要注意的是: 每个线程都有自己的SqSessionn实例,Salsesion 实例不能被共享,安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。
关闭SqlSession是非常重要的。必须要确保SqlSession在fnally语句块中正常关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值