本篇将和大家一起分享MyBatis 3框架,此框架的主要作用就是更加便携地操作数据库,比如将数据库返回的内容进行List或实体类的封装,将执行操作的SQL语句配置到XML文件中,这样做有利于代码的后期维护,使代码的分层更加明确。MyBatis 框架还具有优化查询效率的缓存等功能。那么在本篇中,大家应该会掌握如下内容:
- 使用基于Eclipse的MyBatis插件执行CURD增删改查操作;
- 使用MyBatis操作常用数据库Oracle、 MySQL、MsSQL;
- MyBatis框架中核心对象的生命周期;
- MyBatis结合ThreadLocal类进行CURD的封装。
MyBatis简介
为什么要使用MyBatis框架呢?举一个最简单的例子,在使用传统的JDBC代码时,需要写上必要的DAO层代码,在DAO层代码中将数据表中的数据封装到自定义的实体类中。这给代码的维护带来了问题。但MyBatis和Hibernate 解决了这样的问题,使用它们做查询时,可以自动地将数据表中的数据记录封装到实体或Map中,再将它们放入List中返回。这么常见的功能都可以由MyBatis 和Hibernate 自由方便地实现,可见,使用这两个框架开发应用软件会非常方便快捷。
MyBatis是一个持久化框架,它有不同的语言版本,比如.NET和Java都有MyBatis对应的类库;它有大多数ORM框架都具有的功能,比如程序员自定义的SQL语句、调用存储过程和一些高级的映射。但在这里需要说明的是,它是一种半自动化的ORM映射框架,所以使用方式和Hibernate有非常大的区别。它以SQL语句为映射基础,在使用MyBatis 框架时,可以将SQL语句灵活多变的特性融入项目开发中。
另外,如果使用MyBatis这个框架,还可以省略大多数的JDBC代码,因为它把常用的JDBC操作都进行了封装,可以加快开发效率。MyBatis可以使用XML或Annotations注解的方式将数据表中的记录映射成一个Map或Java POJO实体对象,这也是现在流行ORM的技术方向。比如Hibermate和大多数JPA规范实现者都可以使用Annotations注解的方式来设计程序。
MyBatis操作数据库的步骤
开门见山永远是快速学习一门技术最好的方式。
MyBatis框架的核心是SqlSessionFactory对象,从SqlSessionFactory类的名称来看,它是创建SqlSession对象的工厂。但SqISessionFactory对象的创建来自于SqlSessionFactoryBuilder类,也就是使用SqlSessionFactoryBuilder类创建SqlSessionFactory对象。
使用SqlSessionFactoryBuilder类创建SqlSessionFactory 对象的方式可以来自于一个XML配置文件,也可以来自于一个实例化的Configuration对象。
使用XML配置文件创建SqlSessionFactory对象
package test;
import java. io. IOException;
import java. io. InputStream;
import org .apache. ibatis. io.Resources;
import org. apache. ibatis. session. SqlSessionFactory;
import org. apache. ibatis.session.sqlSessionFactoryBuilder;
public class Test {
public static void main(String[] args) {
try {
String resource = "mybatis-config. xml";
InputStream inputStream = Resources . getResourceAsStream (resource) ;
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder ()
. build (inputStream) ;
System. out.println (sqlSessionFactory) ;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace () ;
}
}
}
上述代码的主要作用就是取得SqlSessionFactory工厂对象。下面测试代码是否能正常创建SqlSessionFactory类的实例。
其中mybatis-config. xml配置文件连接数据库的内容如下。
<?xml version="1.0" encoding= "UTE-8" ?>
<! DOCTYPE configuration
PUBLIC "-/ /mybatis.org//DTD Config 3.0//EN"
"http://mybatis. org/dtd/mybatis-3-config .dtd">
<configuration>
<envi ronments default= "deve lopment">
<envi ronment id= "development ">
<transactionManager type= "JDBC" />
<dataSource type= "POOLED">
<property name= "driver"
value= "com. microsoft.sqlserver. jdbc. sQLServerDriver" />
<property name= "url"
value= "jdbe:sqlserver ://localhost:1079;databaseName=ghydb" />
<property name= "username" value="sa" />
<property name= "password" value="" />
</dataSource>
</envi ronment>
</envi ronments>
</configuration>
配置文件mybatis-config.xml 中主要定义的就是如何连接数据库,以及连接数据库所必备的username和password及url 等参数。
加入当时最新版的MyBatis框架的jar包,如下图所示。
运行程序后并没有出现异常,输出的信息如下图所示。
到此,SqlSessionFactory 对象成功地从XML配置文件中创建。
SqlSessionFactoryBuilder和SqlSessionFactory类的结构
SqlSessionFactoryBuilder类的架构: