1,Ibatis的简介
Ibatis的定义是作为一种DataMapper(一个映射层,在对象和数据库之间传递数据,并保持两者与映射层本身相独立,Mapper在两个独立对象间建立通信关系的一种对象)存在的。
Ibatis通过SQL Map将Java对象映射成SQL语句和将结果再转化成Java对象。与其他ORM框架相比,即解决了Java对象与输入参数和结果集的映射(Java的反射机制),又能够让用户方便的手写使用SQL语句。Ibatis主要完成两件事情:
1) 根据JDBC规范建立与数据库的连接。
2) 通过反射打通Java对象与数据库参数交互之间的相互转化关系。
2,Ibatis的解析过程
Ibatis框架的一个重要组成部分就是SqlMap配置文件,SqlMap配置文件的核心是statement语句包括CRUD操作。Ibatis通过解析SqlMap配置文件得到所有的Statement执行语句,同时会形成ParameterMap和ResultMap两个对象用于处理参数和经过解析后交给数据库处理的Sql对象。
数据的映射过程是这样的:
根绝Statement中定义的SQL语句,解析出其中的参数,按照其出现的顺序保存在Map集合中,并按照Statement中定义的ParameterMap对象解析出参数的Java数据类型。并根据其数据类型构建TypeHandler对象,参数值的复制是通过DataExchange对象完成的。返回的ResultSet也通过DataExchange对象完成转化。
3,Ibatis的主要特征
1) 能够管理对象的持续性。JavaBean到数据表的映射,以对象的方式存储数据。O/R Mapping 的定义都是基于XML,具有很好的扩展性和通用性。
2) 支持多种数据输入和输出类型。
3) 支持静态SQL语言、参数SQL语言和动态SQL语言。
4) 支持新增、修改、删除、查询和存储过程的操作。
5) 支持显示事务和隐式事务,支持JDBC、JTA和容器事务。
6) 允许用户使用定制的SQL来提高查询的性能,提供了多种SQL自动策略开关。
7) 提供了灵活的Cache缓冲机制,以及延迟加载、复合查询的策略,保证一般应用的性能不会低于相应的数据集应用。
8) 使用Ibatis框架可以实现数据库平台的无关性,可以随时切换开关以及数据发布平台,方便移植。
4 Ibatis的SQL MAP执行逻辑
1) 配置SQL Map配置文件,载入JDBC驱动程序和数据库连接(包括事务管理模式和DataSource模式)等信息。
2) 配置SQL Map映射文件,包括ParameterMap、ResultMap、SQL等信息,其中ParameterMap是输入参数部分,resultMap是输出结果部分,SQL是SQL语句部分。
3) 根据SQL Map配置文件配置信息,加载配置的JDBC驱动程序。
4) 根据SQL Map配置文件,建立数据库连接。
5) 根据SQL Map映射文件中的SQL信息和ParameterMap信息,建立符合JDBC规范的SQL语句和输入参数。
6) 执行SQL语句。
7) 处理结果集,把数据库结果转化为SQL Map映射文件的resultMap格式内容
8) 关闭数据库连接。