初始MyBatis

为什么学习框架技术

优势如下:

    • 不用再考虑公共问题,框架已经帮我们做好了
    • 可以专心于业务逻辑,保证核心业务逻辑的开发质量
    • 结构统一,便于学习和维护
    • 框架中集成了前人的经验,可以帮助新手写出稳定、性能优良而且结构优美的高质量程序

 

框架的概念

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

 

主流框架的介绍

Struts 2框架

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

 

Hibernate框架

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

 

Spring框架

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

 

SpringMVC

StringMVC是String框架提供的构建Web应用程序的全功能MVC模块,属于StringFrameWork的后续产品,已经融合在String Web Flow 里面,是结构最清晰的MVC Model2的实现,并且拥有高度呃可配置性,支持多种视图技术。还可以进行定制化开发,相当灵活

 

MaBatis框架

MyBatis是一个优秀的数据库持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate,性能优秀,并且小巧

 

 

数据持久化概念

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

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

 

MyBatis框架及ORM

1、MyBatis框架简介

M有Batis是一个开源的数据持久化框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中实现SQL的灵活配置

2、什么是ORM

ORM(Object/Relational Mapping) 即对象关系映射,是一种数据持久化技术。它会在对象模型和数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据

特点:

      • 基于SQL语法,简单易学
      • 能了解底层封装过程
      • SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
      • 方便程序代码调试

3、MyBatis是ORM解决方案

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

 

 

MyBatis环境搭建

1、下载需要的jar文件

https://github.com/mybatis/mybatis-3/releases

MyBatis依赖包中文件说明

名称

说明

asm-3.3.1.jar

操作Java字节码文件

cglib-2.2.2.jar

多态集成Java类或实现接口

commons-logging-1.1.1.jar

日志处理

javassist-3.17.1-GA.jar

分析、编辑和创建Java字节码的类库

log4j-1.2.17.jar

日志系统

slf4j-api-1.7.5.jar

日志系统的封装,对外提供统一的API接口

2、部署jar文件

具体步骤如下:

(1)、将下载后的mybatis-3.2.2.jar、mysql-connector-java-5.1.0-bin.jar(MySQL数据库驱动文件)及log4j-1.2.17.jar(负责日志输出的jar文件)复制到建好的WEB-INF下的lib目录中,如下所示:

初始MyBatis_第1张图片

(2)、通过MyEclipse导入上述的包。在MyEclipse的工程上右击,选择”Build Path“→”Configure Build Path“ 选项

(3)、在弹出的窗体中单击“Add JARs”按钮

(4)、在弹出的“JAR Selection”窗体中选择lib下刚刚复制的jar文件

(5)、单击“OK”按钮,这时在工程中加入了所选的jar文件

3、创建MyBatis核心配置文件mybatis-config.xml

MyBatis核心配置文件主要作用于配置数据库连接和MyBatis运行时所需的各种特性,包含了设置和影响MyBatis行为的属性

初始MyBatis_第2张图片

mybatis-config.xml文件的几个常用元素的作用如下:

      • configuration:配置文件呃根元素
      • properties:通过resource属性从外部指定properties属性文件(database.properties),该属性描述数据库连接的相关配置(数据库驱动、连接数据库的url、数据库用户名、数据库密码),位置也是在/resources目录下
      • setting:设置MyBatis运行中的一些行为,比如此处设置MyBatis的log日志实现为LOG4J,即使用log4j实现日志功能
      • environments:表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节点下可以配置多个environment子元素节点,但是必须指定其中一个默认运行环境(通过default指定)
      • environment:配置MyBatis的一套运行环境,需指定运行环境ID、事务管理、数据源配置等相关信息
      • mappers:作用是告诉MyBatis去哪里找到SQL映射文件(该文件内容是开发者定义的映射SQL语句),整个项目可以有1个或多个SQL映射文件
      • mapper:mappers的子元素节点,具体指定SQL映射文件的路径,其中resource属性的值表述了SQL映射文件的路径(类资源路径)

4、创建持久化类(POJO)和SQL映射文件

持久化类是指其实例状态需要被MyBatis持久化到数据库中的类。持久化类通常是业务实体类

5、创建测试类

初始MyBatis_第3张图片

MyBatis基本要素

初始MyBatis_第4张图片

MyBatis框架的优点

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

缺点:

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

适用场合:

MyBatis专注于SQL本身,是一个足够灵活的DAO层的解决方案。对性能的要求很高,或者需求变化较多的项目

 

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

三个基本要素:

    • 核心接口和类
    • MyBatis核心配置文件(mybatis-config.xml)
    • SQL映射文件(mapper.xml)

(1)、每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心

(2)、首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建对象

(3)、然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获得

(4)、有了SqlSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有操作的方法,可以用该实例来直接执行已映射的SQL语句

 

SqlSessionFactoryBuilder

1、SqlSessionFactoryBuilder的作用

SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供了多个build()方法的重载

由于方法的参数environment和properties都可以为空,那么去除重复的,真正的重载方法其实只有如下三种:

初始MyBatis_第5张图片

2、SqlSessionFactoryBuilder的生命周期和作用域

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

 

SqkSessionFactory

1、SqlSessionFactory的作用

创建SqlSession实例工厂

2、SqlSessionFactory的声明周期和作用域

一旦创建就会在整个运行过程中始终存在。没有理由去销毁或再创建它,并且在应用运行中也不建议多次创建SqlSessionFactory

最佳作用域是Application

实现步骤如下:

(1)、创建工具类MyBatisUtil.java,在静态代码块中创建SqlSessionFactory对象

import java.io.IOException;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

 

public class MyBatisUtil {

private static SqlSessionFactory factory;

static{//在静态代码块下,factory只会创建一下

try {

InputStream is=Resources.getResourceAsStream("configuration.xml");

factory=new SqlSessionFactoryBuilder().build(is);

} catch (IOException e) {

e.printStackTrace();

}

}

}

 

(2)、创建SqlSession对象和关闭SqlSession

public static SqlSession createSqlSession(){

return factory.openSession(false);//true为自动提交事务

}

public static void closeSqlSession(SqlSession sqlSession){

if(null!=sqlSession){

sqlSession.close();

}

}

初始MyBatis_第6张图片

SqlSession

1、SqlSession的作用

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

2、SqlSession的声明周期和作用域

对应着一次数据库会话,由于数据库会话不是永久的,因此SqlSession的声明周期也不应该是永久的

3、SqlSession的两种使用方式

(1)、通过SqlSession实例来直接执行以映射的SQL语句

(2)、基于mapper接口方式操作数据

 

mybatis-config.xml文件结构

初始MyBatis_第7张图片

1、properties元素

(1)、可通过外部指定的方式,即配置在典型的Java属性配置文件中,代码如下

初始MyBatis_第8张图片

(2)、直接配置为XML,并使用这些属性对配置项实现多态配置

初始MyBatis_第9张图片

2、settings

初始MyBatis_第10张图片

3、typeAliases元素

typeAliases元素的作用是配置类型别名,通过与MyBatis的SQL映射文件相关联,减少输入多余的完整类名

初始MyBatis_第11张图片

4、environments元素

表示配置MyBatis的多套运行环境,将SQL映射到不同的数据库上

子元素节点:environment,但是必须指定其中一个默认运行环境

通过environments配置运行环境,具体配置如下:

初始MyBatis_第12张图片

transactionManager-事务管理器

语法:

dataSource

dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源

有三种数据源类型

语法:

5、mappers元素

映射器,定义SQL语句

必须在配置引用mapper映射文件

(1)、使用类资源路径获取资源

(2)、使用URL获取资源

 

DTD文件的引入

1、DTD文件的位置

在mybatis-3.3.3.jar 里

路径:mybatis-3.4.2\mybatis-3.4.2\mybatis-3.4.2\org\apache\ibatis\builder\xml

2、新增XML Catalog

你可能感兴趣的:(初始MyBatis)