Ibatis原理分析

转载 2012年03月27日 22:11:49
  1. Ibatis框架架构如下图所示:

 

     外部Java Application调用SqlMapClient接口,经过SqlMapSession、SqlMapExecutorDelegate等实现类,通过PersistentObject、ParameterMap、ResultMap、

MappedStatement、Transaction等,基于JDBC、JTA等事务操作,最后调用SqlExecutor操作类对数据库进行操作

   SQL Map框架可以专门用于O/R映射,O/R映射是JavaBean对象到数据库中关系表的映射。SQL Map框架使用XML描述符将JavaBean映射到SQL语言,执行SQL

并将结果映射返回对象,其核心功能是围绕MappedStatement进行的。

   在实现O/R时,通常是通过配置SqlMapConfig.xml来定义总体变量、事务管理模式、连接数据库信息,同时,指定包含MappedStatements,ResultMap、ParameterMap的映射文件位置等内容,然后通过SQL Map API 将JavaBeans对象映射到PreparedStatement参数和ResultSet,并完成持久化操作

 

  SQL Map提供了一个简洁的框架,使用简单的XML描述文件将Java Bean,Map实现和基本数据类型的包装类(String,Integer等)映射成JDBC的PreparedStatement。以下流程描述了SQL Maps的高层生命周期:
将一个对象作为参数(对象可以是Java Bean,Map实现和基本类型的包装类),参数对象将为SQL修改语句和查询语句设定参数值。


    1) 执行mapped statement。这是SQL Maps最重要的步骤。SQL Map框架将创建一个PreparedStatement实例,用参数对象为PreparedStatement实例设定参数,执行 PreparedStatement并从ResultSet中创建结果对象。


    2) 执行SQL的更新数据语句时,返回受影响的数据行数。执行查询语句时,将返回一个结果对象或对象的集合。和参数对象一样,结果对象可以是Java Bean,Map实现和基本数据类型的包装类

 

 结合传统的JDBC操作,转化为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.   关闭数据库连接

 

深入分析 iBATIS 框架之系统架构与映射原理

iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Java 对象与输入参数和结果集的映射,又能够让用...
  • JameBing
  • JameBing
  • 2016年11月24日 17:36
  • 1955

ibatis源码学习(三)参数和结果的映射原理

在ibatis整体设计和核心流程一文中,我们提到了ibatis框架中sql的执行过程,sql执行前后有两个重要步骤: 参数对象映射到sql执行参数,sql执行结果映射到结果对象。本文将深入分析ib...
  • u010408365
  • u010408365
  • 2015年11月22日 15:47
  • 1079

iBATIS工作原理浅析

一:iBATIS工作原理是什么呢?iBATIS在不同的系统中的角色是什么呢?那么本文将会向你介绍这方面的信息 谈到iBATIS工作原理问题尤其要注意的是,有了iBATIS,你就再不需要直接编写J...
  • q1512451239
  • q1512451239
  • 2016年11月09日 11:10
  • 656

ibatis源码学习(四)动态SQL的实现原理

动态SQL是ibatis框架的一个重要特性,本文将深入分析ibatis框架中动态SQL的实现原理。动态sql的使用参见官方文档:Dynamic SQL。本文使用的ibatis版本为2.3.4。  ...
  • glory1234work2115
  • glory1234work2115
  • 2016年03月11日 17:51
  • 1209

Ibatis 框架的基本介绍及基础操作

《一》、iBatis框架的基本介绍:       Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate、Toplink等在java编程的对象持久化...
  • AbbyDream
  • AbbyDream
  • 2017年03月15日 19:29
  • 1016

Ibatis的缓存机制

我们知道Hibernate有自己的缓存机制,Hibernate中分为一级缓存和二级缓存,其中的一级缓存是session缓存,是Hibernate封装好的,不需要我们做任何配置的,一级缓存 是与sess...
  • hai_cheng001
  • hai_cheng001
  • 2013年12月16日 21:30
  • 4665

项目开发-iBatis事务源码之事务提交和回滚

接上篇继续事务的提交和结束流程如下。    commitTransaction       SqlMapClientImpl的commitTransaction操作,类似startTransacti...
  • wojiushiwo945you
  • wojiushiwo945you
  • 2015年04月15日 10:37
  • 2056

iBatis.Net(C#)一:简介及运行环境

转载来源:http://www.cnblogs.com/13590/archive/2013/02/27/2934580.html 摘要:介绍iBatis.Net的基本情况和运行原理,运行环境中各参...
  • siutony
  • siutony
  • 2014年12月24日 16:57
  • 553

IBatis配置一对一、一对多两种实现方式

IBatis配置一对一、一对多两种实现方式有两张表:student(学生)、class(班级),一个学生只属于某一个班级,但某一个班下可以有多个学生。一对一方式一...
  • Muspelheim
  • Muspelheim
  • 2016年01月08日 22:41
  • 2675

ibatis基于拦截器的分页实现

ibatis基于拦截器的分页实现
  • ZWLJavaWeb
  • ZWLJavaWeb
  • 2016年07月23日 17:41
  • 484
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ibatis原理分析
举报原因:
原因补充:

(最多只允许输入30个字)