谈谈 MyBatis
Mybatis 是一个半自动化的 ORM 框架,它对 jdbc 的操作数据库的过程进行封装,使得开发
者只需要专注于 SQL 语句本身,而不用去关心注册驱动,创建 connection 等,Mybatis 通过 xml
文件配置或者注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中的
sql 进行映射成最终执行的 sql 语句,最后由 Mybatis 框架执行 sql 并将结果映射成 java 对象并返
回。每个 MyBatis 应用程序主要都是使用 SqlSessionFactory 实例的,一个 SqlSessionFactory 实例
可以通过 SqlSessionFactoryBuilder 获得。SqlSessionFactoryBuilder 可以从一个 xml 配置文件或者
一个预定义的配置类的实例获得。
Mybatis 分为三层
(1)API 接口层:提供给外部使用的接口 API
(2)数据处理层:负责具体的 SQL
(3)基础支撑层:负责最基础的功能支撑,如连接管理,事务管理,配置加载和缓存处。
理
Mybatis 的优点
基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL
写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动
态 SQL 语句,并可重用。
与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关
连接;
很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的
数据库 MyBatis 都支持)。
能够与 Spring 很好的集成;
提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对
象关系组件维护。
Mybatis 的缺点
- Sql 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 Sql 语句的功底有
一定要求。 - 对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是不错的选择。
什么是 ORM?
对象关系映射(Object Relational Mapping,简称 ORM)是通过使用描述对象和数据库之间
映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。常见的 ORM 框架有:
Hibernate、TopLink、Castor JDO、Apache OJB、MyBatis 等。
JDBC 编程有哪些不足乊处,MyBatis 是如何解决这些问题的?
- 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池
可解决此问题。解决:在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链
接。 - Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变
java 代码。解决:将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离 - 向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需
要和参数一一对应。解决: Mybatis 自动将 java 对象映射至 sql 语句。