`

对iBATIS的理解

阅读更多

1. iBATIS

关于iBATIS,iBATIS是一个Data Mapper 框架,并非一个ORM框架,他利用反射和数据库返回结果集的ResetSetMetaData,省去了JDBC传递参数和设置结果集的麻烦。简单是他相对于其他ORM工具的最大特性。他是直接调用你编写的SQL语句或存储过程。他还可以动态构造SQL语句。

 

2. iBATIS的代码生成工具:

         abator (http://ibatis.apache.org/abator.html)

         http://www.iteye.com/topic/138361

   1) 首先配置好 abatorConfig.xml,范例参考官方文档.例如:

    <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE abatorConfiguration

  PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN"

  "http://ibatis.apache.org/dtd/abator-config_1_0.dtd">

<abatorConfiguration>

  <abatorContext id="DB2Tables" generatorSet="Java2">

    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"

        connectionURL="jdbc:db2:TEST"

        userId="db2admin"

        password="db2admin">

      <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

    </jdbcConnection>

    <javaTypeResolver >

      <property name="forceBigDecimals" value="false" />

    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="\AbatorTestProject\src">

      <property name="enableSubPackages" value="true" />

      <property name="trimStrings" value="true" />

    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="\AbatorTestProject\src">

      <property name="enableSubPackages" value="true" />

    </sqlMapGenerator>

    <daoGenerator type="SPRING" targetPackage="test.dao"  targetProject="\AbatorTestProject\src">

      <property name="enableSubPackages" value="true" />

    </daoGenerator>

    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >

      <property name="useActualColumnNames" value="true"/>

      <generatedKey column="ID" sqlStatement="DB2" identity="true" />

      <columnOverride column="DATE_FIELD" property="startDate" />

      <ignoreColumn column="FRED" />

      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />

    </table>

  </abatorContext>

</abatorConfiguration>

   2) 可以将abator.jar加入到项目工程的lib下,然后在eclipse中用Java Application的方式来运行该jar包(eclipse会自动找到Main Class:org.apache.ibatis.abator.api.AbatorRunner

 加入参数: abatorConfig.xml true

    也可以在控制台运行命令: java -jar abator.jar abatorConfig.xml true

 

    3. iBATIS的占位符

     $中间的变量就是直接替换成值的

     #会根据变量的类型来进行转换

     比如articleTitle的类型是string, 值是"标题"的时候

     $articleTitle$ = 标题

     #articleTitle# = '标题'

  

 4. iBATIS的使用

      使用动态条件查询时候,记得每一个条件表达式,都使用prepend="AND"

      而且里面的SQL语句注意 函数名跟()括号之间不要有空格。

      编写SQL语句时,因为大多是有abator来生成,注意要对表的default值做处理,以免导致将null值插入到有default值的字段中。

 

    5. 尽量使用批处理

      批处理和没批处理,相差性能很大。

try {

           getSqlMapClient().startTransaction();

           List<Phone> phones = (List<Phone>) getSqlMapClient().queryForList(

                  "selectPhone");

           int effected = 1;

 

           //getSqlMapClient().startBatch();

           for (Phone ph : phones) {

              getSqlMapClient().update("updatePhone", ph);

           }

           //getSqlMapClient().executeBatch();

 

           getSqlMapClient().commitTransaction();

 

           return effected;

       } catch (SQLException e) {

           e.printStackTrace();

           return -1;

       } finally {

           try {

              getSqlMapClient().endTransaction();

           } catch (SQLException e) {

              e.printStackTrace();

           }

       }

    同样的代码,如果没有使用批处理,则更新2000条数据使用了 15,938ms。使用批处理仅需1,188ms

分享到:
评论

相关推荐

    ibatis 一对多 多对多完整映射

    本文将深入探讨如何在iBATIS中实现一对多和多对多的关系映射,并提供相关的源码分析和工具使用技巧。 **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多...

    ibatis总结 ibatis ibatis ibatis ibatis

    - `applicationContext.xml`是Spring的主配置文件,它定义了Spring容器中的bean,包括对Struts、Ibatis等其他框架的配置,实现各组件间的依赖注入。 - `codelist.xml`则可能包含了全局共享的bean,如`...

    Spring对IBatis的整合

    通过对Spring与IBatis整合的理解和实践,我们可以看到Spring为IBatis提供了非常全面的支持。这种整合不仅可以简化代码,还能提高应用程序的性能和稳定性。通过本章节的学习,开发者应该能够掌握如何使用Spring来有效...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,...实践是检验真理的唯一标准,所以亲自动手尝试这个ibatis demo,会让你对Ibatis的理解更加深入。

    ibatis 一对多

    本文将深入探讨`iBatis` 中的一对多映射关系,以及如何通过源码理解和使用这个特性。 一对多映射是数据库关系模型中的常见概念,指的是一个父表(如部门表)可以对应多个子表(如员工表),每个部门可以有多个员工...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    通过阅读和理解iBatis的源码,我们可以更深入地了解其设计思路,从而更好地利用这个框架,提升我们的开发效率和代码质量。同时,源码学习也能帮助我们解决实际项目中遇到的问题,增强我们在ORM领域的专业技能。

    iBATIS-DAO-2.3.4.726.rar_com.ibatis.dao_iBATIS dao 2_iBatis DAO_

    在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好地掌握其实现细节。 首先,iBATIS DAO的核心概念是SQL Maps,它们定义了数据库操作的SQL语句,并将其映射到Java...

    Ibatis入门例子,Ibatis教程

    随着对Ibatis的深入理解和实践,你会发现它在处理数据库操作时的灵活性和强大性。在实际项目中,结合Spring框架使用Ibatis,可以构建出更加健壮、高效的后端系统。因此,无论你是初学者还是有经验的开发者,掌握...

    iBatis开发指南和一个iBatis实例

    在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入理解和掌握iBatis的关键。 首先,"iBatis精讲PDF"是理解iBatis基础概念和工作原理的重要资料。iBatis的核心理念是将SQL...

    Ibatis一对一映射提示

    本篇将深入讲解iBATIS一对一映射的概念、配置及应用,帮助你更好地理解和运用这个功能。 一对一映射在数据库设计中是指两个表之间存在一对一的关系,例如,一个员工可能只有一个部门,一个部门也只对应一个员工。在...

    ibatis教程,ibatis帮助文档

    相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现,因为它允许开发者直接编写SQL语句,保持对数据库查询的精细控制。 一、iBATIS的核心要素——SQL Maps SQL Maps是iBATIS的核心,通过XML...

    ibatis api 帮助文档+IBATIS 开发文档

    `ibatis-api.chm`是IBATIS的API帮助文档,它包含了所有核心类和接口的详细说明,是理解和使用IBATIS的基础。以下是一些主要组件和概念: 1. **SqlMapClient**:这是整个IBATIS框架的核心,负责管理所有的SQL映射...

    Ibatis3手册 Ibatis3参考手册

    Ibatis3以其灵活性和高效性在众多ORM框架中脱颖而出,特别适合那些对SQL查询有特殊需求或者需要精细化控制的应用场景。希望本文能够帮助开发者更好地理解和掌握Ibatis3的核心知识,为实际项目开发打下坚实的基础。

    ibatis 一对多关系映射

    总的来说,理解并熟练运用Ibatis的一对多关系映射是优化数据访问效率,提高代码可读性和可维护性的重要技能。 在实际开发中,合理地使用Ibatis的一对多关系映射可以避免频繁的数据库查询,提高系统性能。同时,它也...

    Ibatis 入门经典 实例

    通过以上内容,你将对 Ibatis 有一个全面的认识,并能动手实践。实际项目中,还可以结合日志、缓存等机制,进一步优化 Ibatis 的使用。记住,学习 Ibatis 不仅是为了掌握框架本身,更是为了理解如何优雅地处理数据...

    ibatis资料ibatis资料

    3. **实践项目**: 尝试在一个小项目中使用iBATIS,实践中遇到的问题会加深对iBATIS的理解。 4. **了解MyBatis**: 虽然iBATIS已被MyBatis取代,但两者有很多相似之处。了解MyBatis的新特性,如注解支持和更强大的...

    Ibatis

    通过学习 Ibatis,开发者可以更好地理解和掌握数据访问层的设计与实现,提升开发效率。提供的文档《iBATIS-SqlMaps-2_cn.pdf》是学习 Ibatis 的宝贵资源,涵盖了框架的各个方面,值得深入研究。

    ibatis plugin用户指南

    《iBatis Plugin用户指南》 ...从代码生成到智能提示,每一个细节都体现了插件对iBatis开发流程的深度理解和支持。对于那些习惯于IntelliJ IDEA的开发者来说,iBatis Plugin无疑是一个不可或缺的工具。

    ibatis api,ibatis文档,ibatis说明文档

    本篇文章将深入探讨Ibatis API、文档以及说明,帮助你更好地理解和使用这个强大的框架。 Ibatis API是Ibatis的核心接口和类,提供了丰富的功能供开发者进行数据访问。以下是一些关键的API组件: 1. ...

    ibatis源码

    描述中的"ibatis框架源码剖析书中附带的光盘,ibatis源码分析"暗示这可能是一个学习资源,用于深入理解iBATIS的工作原理,可能包括了对源码的详细解读和分析。 **iBATIS核心知识点** 1. **SQL映射**:iBATIS的核心...

Global site tag (gtag.js) - Google Analytics