你们都知道当前比较流行的框架,如Spring、SpringMVC、Hibernate、Mybatis等框架,那今天我们来说讲当前比较流行的企业框架Mybatis。 首先先来介绍一下Mybatis这个框架:Mybatis是一个开源的数据持久化层框架,它内部封装了经过JDBC访问数据库的操做,支持普通的SQL查询,存储过程和高级映射,几乎消除了全部的JDBC代码和参数设置及结果集的检索。 接下来讲说Mybatis的优缺点: 优势:与JDBC相比,减小了50%以上的代码量,最简单的持久化框架,小巧简单易学,SQL代码从程序中完全分离,可重用。提供了XML标签,支持编写动态SQL,提供映射标签,支持对象与数据库的ORM字段映射。那么什么是ORM呢?java
ORM(Object RelationMapping)即对象关系映射,是一种数据持久化技术,它在对象模型和关系型数据库之间创建对应关系。 接下来讲说Mybatis的缺点: SQL语句编写量大,对于开发人员有必定的要求,数据库移植性差sql
首先咱们的去Mybatis的官方网站(http://mybatis.org)下载最新Release版本的Mybatis 压缩包解压后能够看到一下的目录结构数据库
在根目录下存放着mybatis-3.2.2.jar,为Mybatis的jar文件,Mybatis-3.2.2.pdf为Mybatis官方使用文档
lib目录下存放着编译依赖包,接下来来介绍一下Mybatis编译的依赖包编程
其次是mybatis-3-mybatis-3.2.2.zip(Mybatis源码包):里面是Mybatis的全部源代码
目录结构就讲到这,至于具体建立Mybatis项目在这我就很少说了api
接下来再介绍一下Mybatis的核心配置文件configuration.xml
Mybatis核心配置文件主要用于配置数据库链接和Mybatis运行时所须要的各类特性,包含了设置和影响Mybatis行为的属性
接下来讲说配置文件中的基本要素mybatis
<?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> <!-- 引入database.properties --> <properties resource="database.properties"/> <!-- 配置mybatis的log实现LOG4J --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!-- 配置mybatis多套运行环境 --> <environments default="development"> <environment id="development"> <!-- 配置事务管理,采用JDBC的事务管理 --> <transactionManager type="JDBC"></transactionManager> <!-- POOLED:mybatis自带的数据源,JNDI:基于Tomcat的数据源 --> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 将mapper文件加入到配置文件中 --> <mappers> <mapper resource="POJO/UserMapper.xml"/> </mappers> </configuration>
mybatis-config.xml文件的几个经常使用元素的做用以下:app
在这里我稍微提一下注意事项:mybatis-config.xml文件的元素节点是有必定的顺序,节点位置若不按照顺序排位的话,那么XML文件会报错,至于元素的排列顺序是:
1.properties框架
2.settingside
3.typeAliases测试
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.plugins
8.environments?
9.databaseIdProvider
10.mappers
经常使用元素的顺序大体就是这样的,你们能够参考一下
有了Mybatis的核心配置文件后,接下来就要准备持久化类和SQL映射文件
那么什么是持久化类呢?持久化类是指其实例状态须要被Mybatis持久化到数据库中的类,在应用的设计中,持久化类一般对应业务中的业务实体,Mybatis通常采用POJO编程模型来实现持久化类,与POJO类配合完成持久化工做是Mybatis最多见的工做模式
既然都讲到这了,我就再讲讲什么是POJO吧!
POJO(Plain Ordinary Java Object):从字面上来讲就是普通的Java对象,POJO类能够简单地理解为符合JavaBean规范的实体类,它不须要继承和实现任何特殊的Java基类或者接口,JavaBean对象的状态保存咋属性中,访问属性必须经过对应的getter和setter方法
接下里我用实例来向你们演示一下
public class User { private Integer id; //id private String userCode; //用户编码 private String userName; //用户名称 private String userPassword; //用户密码 private Integer gender; //性别 private Date birthday; //出生日期 private String phone; //电话 private String address; //地址 private Integer userRole; //用户角色 private Integer createdBy; //建立者 private Date creationDate; //建立时间 private Integer modifyBy; //更新者 private Date modifyDate; //更新时间 //省略getter,setter方法
接下来,继续进行SQL映射文件的建立,完成与POJO(实体类)的映射,该文件也是一个XML文件,命名为UserMapper.xml,示例以下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="POJO.UserMapper"> <!-- 查询用户列表记录数 --> <select id="count" resultType="int"> select count(1) as count from smbms_user </select> </mapper>
上面的代码就是所定义的SQL语句,其中元素的含义是
1.mapper:映射文件的根元素节点,只有一个属性namespace
2.select:表示查询语句,是Mybatis最经常使用的元素之一,经常使用属性以下
SQl映射文件也弄好了,接下来就是建立测试类了,具体的实现步骤:
1.读取全局配置文件:mybatis-config.xml
String resource="mybatis-config.xml"; //获取mybatis-config.xml文件的输入流 InputStream is=Resource.getResourceAsStream(resource);
2.建立SQLSessionFactory对象,此对象能够完成对配置文件的读写
SQLSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
3.建立SQLSession对象,此对象的做用是调用mapper文件进行数据操做,须要注意的是必须先将mapper文件引入到mybatis-config.xml中才能起效
int count=0; SqlSession sqlSession=null; sqlSession=factory.openSession(); //Mybatis经过mapper文件的namespace和子元素的id来找到对应的SQL,从而执行查询操做 count=sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count"); logger.debug("UserMapperTest count------>"+count);
4.关闭SqlSession对象
sqlSession.close();
上面我们已经成功地将Mybatis搭建出来了,下面再来讲说Mybatis的核心要素
首先介绍一下Mybatis的核心接口和类
SqlSessionFactoryBuilder负责构建SQLSessionFactory,而且提供了多个build()方法的重载,分别是
SqlSessionFactoryBuilder的最大特色就是:用过即丢。一旦建立了SQLSessionFactory对象以后,这个类就再也不须要存在了,所以SqlSessionFactoryBuilder的最佳范围就是存在于方法体内,也就是局部变量而已。
SqlSessionFactory简单的理解就是建立SqlSession实例的工厂。全部的Mybatis应用都是以SQLSessionFactory实例为中心,SQLSessionFactory的实例能够经过SqlSessionFactoryBuilder对象来获取
SqlSessionFactory对象一旦建立,就会在整个应用程序中始终存在。没有理由去销毁或再建立它,而且在应用程序运行中也不建议屡次建立SQLSessionFactory,怎么说呢,你能够吧SqlSessionFactoryBuilder当作建立工厂的工人,而SQLSessionFactory就是建立好的工厂,通常来讲工厂建立好了以后,工人就不须要了,而工厂会被保留下来,这就是它们的生命周期吧!
以上就是本文所介绍Mybatis的内容了,大体的核心都介绍完了,接下来你能够本身去消化一下,加油!