mybatis框架的原理及使用
什么是mybatis
在java web开发中,mybatis是一个用于持久化层的框架,是对jdbc操作数据库的封装。下面是一个标准的基于SSM的java web工程的层级结构图,持久层的作用就是把用户产生的各种信息最后存储到数据库中,在标准项目中只有持久化层可以直接操作数据库。
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。mybatis现在已经成为一个非常流行的java持久层框架。
mybatis的特点
不同于hibernate,mybatis提供的是一种“半自动化”的ORM实现。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。但是它并没有封装SQL操作,它支持普通 SQL查询,存储过程和高级映射,使用者可以根据自己的需求手写动态SQL来完成数据操作。
mybatis的工作流程
这是一张非常经典的mybatis工作流程图,mybatis启动时候,首先会加载配置信息,在里面读取到数据源,数据库连接池,以及mybatis自身配置等等,然后会去寻找mapper映射文件,就是配置数据表和java类映射关系的文件。当接收到调用请求时候,会寻找对应的MappedStatement,从而解析并执行SQL语句,完成操作并对结果进行mapper转换。
简单的mybatis程序
- 导入相关jar文件,创建数据表,创建实体类
- 编写配置文件,包括数据库连接池,数据源,事务配置
- 编写mapper文件,建立数据表和实体类的关系,dao层方法的sql实现
- 主程序读取配置文件,创建SqlSessionFactory
- 通过SqlSessionFactory获取SqlSession对象,处理dao层方法
- 使用结束关闭SqlSesion
在实际开发中,mybatis通常整合spring来使用,数据库连接池,SqlSessionFactory等交给spring管理,还会更大程度上简化开发,后面介绍SSM整合时候会详细介绍具体配置,关于mybatis的内容官方的中文文档也非常友好。