Mybatis是一个支持普通sql查询、存储过程和高级映射的优秀持久层框架。Mybatis去掉了几乎所有的对于JDBC的操作,然后使用简单的xml文件或注解进行配置和原始映射。
Mybatis作为持久层框架,它的主要思想就是将程序中大量的sql语句剥离出来,写在配置文件中,以实现sql语句的灵活应用。在使用的时候只需要在配置文件中添加或修改自己需要的sql语句,实现sql语句与程序代码分离。
纵观目前主流的ORM(Object/Relation Mapping 简称:对象/关系数据库映射),无论是Hibernate还是JPA,都对数据库结构提供了较为完整的封装,程序员只需要定义好POJO(Plain Old Java Objects)到数据库表的映射关系,就可以自动生成对应的sql并调用JDBC接口加以执行。
大多数情况(特别是对新项目、新系统的开发而言),这样的自动生成方式是非常方便的,但是在一些特定条件下,这种方式未必适合,因为自动生成也导致了操作的灵活性。例如:
- 系统的部分或全部数据来自现有数据库,出于安全考虑,只对开发团队提供几条SelectSQL(或存储过程)以获取所需数据,具体表结构不予公开。
- 开发规范中要求,所有牵扯业务逻辑部分的数据库操作,必须在数据层由存储过程实现。
- 系统数据量大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
面对这样的需求,Hibernate不再适合解决上述问题,甚至无法使用它。此时直接使用JDBC进行数据库操作实际上也是不错的选择,只是JDBC的代码之类的操作太过繁琐,而“半自动化”的Mybatis却正好解决了问题。