一、简介
MyBatis是iBatis的改名版,iBatis来源于“internet”和"abatis"的组合,是一个基于java的持久层的框架。iBatis提供的持久层框架包括SQL Maps和Data Access Object(dao)
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀半自动化持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和JAVA的POJOS(plain Old java Objects,普通的java对象)映射成数据库中的记录。
二、Mybatis优势
相对于Hibernate和Apache OJB等全自动化ORM解决方案而言,ibatis是一种半自动化的ORM实现。
无论是Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制。程序员往往只需要定义好了POJO到数据库的映射关系即可通过Hibernate或OJB提供的方法完成持久层操作。程序员甚至不需要对SQL的熟练掌握,Hibernate/OJB会根据指定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行。
大多数情况下(特别是对新项目,新系统开发而言),这样的机制无往不利,但是一些特定的环境下,这种全自动化的解决方案却未必灵光。
在系统咨询工作过程中,常常遇到以下情况:
1、系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
2、开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现。
3、系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。
面对这样的需求,直接使用JDBC进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作令人厌烦。半自动化的ibatis却刚好解决了这个问题。这里的半自动化是相对于Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。而ibatis的着力点,则在于POJO和SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成SQL执行。具体的SQL需要程序员自己编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定的POJO。
Hibernate由于是全自动的,处理多表关联的时候,它会自动进行多表操作,从而降低了性能,而mybatis的半自动化着力于ORM映射关系,将SQL的编写工作交给编程人员,从而提高了持久层性能。
三、生成核心映射类,DAO,配置
利用代码自动生成MyBatis所需要的ORM映射,这里包括一个DAO接口,一些对数据库表的映射Java类和每个表对应的一个xml配置文件。
1、通过帮助文档,建立核心的MyBatis配置文件generator.xml,在该文件中已经告诉MyBatis所连接的数据库,所使用哪种方式对数据表进行映射。
2、对generator.xml文件中所指定的生成路径进行合理修改,主要是要把对应的目录找到,并建立。
3、建立由generator.xml文件中所指定的目录,这里叫zxc系列。‘zxc.model’,'zxc.mapping','zxc.dao'等。
4、由java命令生成model,mapping,dao等,如下命令:java -jar mybatis-generator-core-XXX.jar -configfile generator.xml -overwrite
其中XXX指的是:该jar包的版本号
成功生成目录:并在目录中观看所得到的文件。