【使用SSM框架开发企业级应用】初始MyBatis/MyBatis 环境搭建

初始MyBatis

单词

MyBatis框架

SqlSessionFactory工厂

SqlSessionFactoryBuider构造器

SqlSession使用

Configuration配置

Mapper映射

Environment环境

Property性质

Datasource数据源

typeAliases类型命名

框架技术

框架概念

框架是一个提供了可重用的公共结构的半成品

主流框架的介绍

  1. Struts框架
  2. Hibernate框架
  3. Spring框架
  4. SpringMVC框架
  5. MyBatis框架

MyBatis框架

 MyBatis是一个开源的数据持久层框架,内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索

用JDBC查询返回的是ResultSet对象,ResultSet往往并不能直接使用,还需要转换成其他封装类型,通过JDBC查询并不能直接得到具体的业务对象。

这样,在整个查询的过程中就需要做很多重复性的转换工作。

而使用MyBatis将这几行代码分解包装(如上述代码所示):

1) 第1、2行:是对数据库链接的管理,包括事务管理;

2) 第3、4、5行:MyBatis通过配置文件来管理SQL以及输入参数的映射;

3) 第6、7、8、9行:MyBatis获取返回结果到Java对象的映射,也是通过配置文件管理。

优点

与JDBC相比,减少了50%以上的代码量

最简单的持久化框架,小巧并简单易学

SQL代码从程序代码中彻底分离,可重用

提供XML标签,支持编写动态SQL

提供映射标签,支持对象与数据库的ORM字段映射

缺点

SQL语句编写工作量大,对开发人员有一定要求

数据库移植性差

MyBatis框架适用场合

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

什么是ORM?

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

MyBatis 环境搭建

在MyEclipse中新建工程后,要使用MyBatis,需要做一下准备工作

 

一.下载所需的jar文件

MyBatis的官方网站是http://mybatis.org,可以下载到最新Release版本的MyBatis。其他Release版本的MyBatis的jar文件都可以从官方网站下载得到。

【注意:】

目前MyBatis官网在国内访问受限,若能访问到官网,则官网的所有下载链接全部引导到github上(https://github.com/mybatis/mybatis-3/releases)。

推荐下载mybatis-3.2.2.zip和mybatis-3-mybatis-3.2.2.zip(通过响应版本的“Source Code(zip) ”链接下载)。

1. mybatis-3.2.2.zip(MyBatis的jar文件)

Mybatis-3.2.2.zip解压后的目录结构如图2所示:

图2:目录结构

注意查看根目录(mybatis-3.2.2)和lib目录:

1) 在根目录下存放着mybatis-3.2.2.jar,为MyBatis的jar文件;

2) mybatis-3.2.2.pdf为MyBatis官方使用手册。

lib目录下存放着编译依赖包,如图3所示:

图3:MyBatis编译依赖包

这些jar文件的作用如图4所示:

 

图4:MyBatis依赖包的文件说明

2. mybatis-3-mybatis-3.2.2.zip(MyBatis源码包)

Mybatis-3-mybatis-3.2.2.zip是MyBatis的源码包,里面是MyBatis的所有源代码。

解压后目录结构如图5所示:

图5:源码包目录结构

Mybatis的核心对象

SqlSessionFactoryBuider对象 
SqlSessionFactoryBuider对象可以被JVM虚拟机所实例化、使用或者销毁。一旦使用SqlSessionFactoryBuider创建SqlSessionFactory对象后,SqlSessionFactoryBuider类就不需要存在了,也就是说不需要保持此对象的状态,可以随意的任由JVM销毁。因此SqlSessionFactoryBuider对象的最佳适用范围是方法之内。

 

SqlSessionFactory对象 
SqlSessionFactory对象有SqlSessionFactoryBuilder对象创建。一旦创建SqlSessionFactory类的实例,该实例在应用程序执行期间都存在,根本不需要每一次操作数据库时都重新创建他,所以应用它的最佳方式就是写一个单例模式,或使用Spirng框架来实现单例模式对SqlSessionFactory对象进行的管理。

SqlSession对象 
SqlSession对象由SqlSessionFactory类创建,需要注意,每个线程都应该有自己的SqlSession实例。SqlSession的实例不能共享,它是线程不安全的,所以不能再Servlet中生命该对象的一个实例变量。因为Servlet是单例的,申明成实例会造成线程安全问题,也绝不能将SqlSession实例的对象放在一个类的静态字段甚至是实例字段中。还不可以将Sqlsession实例的对象放在任何类型的管理范围中,比如Servlet对象中的Httpsession会话。在接收到HTTP请求时,可以打开一个SqlSession对象操作数据库,然后返回响应,就可以关闭它。关闭SqlSession很重要,应该确保使用finally块来关闭它。

SqlSession生命周期和作用域

SqlSession对应着一次数据库会话,由于数据库绘画不是永久的,因此SqlSession生命周期也不是永久的.相反,每次访问数据库时都需要创建他(并不是说在SqlSession里只执行一次sql,是完全可以执行多次的,若是关闭了SqlSession,就需要重新创建它)创建SqlSession的地方只有一个,那就是有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的,因此最佳的作用域范围是request作用域或者方法体作用域内,关闭SqlSession是非常重要的,必须确保SqlSession在finally语句中正常关闭.

核心配置文件

 mybatis—config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"></properties>
    <!-- 起别名-->
    <typeAliases>
        <package name="cn.happy.entity"></package>
    </typeAliases>
    <environments default="development">
        <environment id="development"><!-- 标识可以更改-->
            <transactionManager type="JDBC" /><!-- 事务管理机制JDBC[manager]-->
            <dataSource type="POOLED"><!-- 连接池自带的数据源-->
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>

        <!-- orcl可以有多个环境变量多个environments-->
    </environments>
    <!--映射文件:描述某个实体和数据库表的对应关系 -->
    <mappers>
        <package name="cn.happy.dao"></package>
    </mappers>
</configuration>


本章总结

  1. 框架(Framework)是一个提供了可重用的公共结构的半成品.它为构建新的应用提供了极大便利
  2. 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称
  3. Orm即对象/关系数据映射,也可以李杰为一种数据持久化技术.
  4. MyBatis的基本包括核心对象.核心配置文件.sql映射文件

 

 

内容就到这,

我是印书打总结的陈恰恰.77

猜你喜欢

转载自blog.csdn.net/qq_41770735/article/details/82459040