【使用SSM框架开发企业级应用】初始MyBatis/MyBatis 环境搭建
初始MyBatis
单词
MyBatis框架
SqlSessionFactory工厂
SqlSessionFactoryBuider构造器
SqlSession使用
Configuration配置
Mapper映射
Environment环境
Property性质
Datasource数据源
typeAliases类型命名
框架技术
框架概念
框架是一个提供了可重用的公共结构的半成品
主流框架的介绍
- Struts框架
- Hibernate框架
- Spring框架
- SpringMVC框架
- 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>
本章总结
- 框架(Framework)是一个提供了可重用的公共结构的半成品.它为构建新的应用提供了极大便利
- 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称
- Orm即对象/关系数据映射,也可以李杰为一种数据持久化技术.
- MyBatis的基本包括核心对象.核心配置文件.sql映射文件
内容就到这,
我是陈恰恰.77