`
csbison
  • 浏览: 150153 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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 学习笔记 ibatis 学习笔记 ibatis 学习笔记

    IBatis学习笔记以及使用心得

    IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得IBatis学习笔记以及使用心得

    ibatis学习笔记

    ibatis学习笔记 ibatis学习笔记 ibatis学习笔记 ibatis学习笔记 ibatis学习笔记 ibatis学习笔记 ibatis学习笔记

    持久层框架ibatis学习笔记

    这篇iBatis 学习笔记是跟着传智播客的视频学习整理的,理解上难免有些错误,请以视频为 根本,有些地方笔记中没有整理到,因为这是我之后看着自己做的工程项目总结的,和视频 不完全一致。请谅解。

    ibatis学习笔记.txt

    ibatis学习笔记.txtibatis学习笔记.txtibatis学习笔记.txt

    iBatis学习笔记

    iBatis学习笔记,有利于初步了解iBatis。

    Ibatis学习笔记,文档,资源6合1

    Ibatis学习笔记,文档,资源,6合1,有兴趣自学ibatis的童鞋的最佳选择。

    IBATIS学习笔记

    iBatis是像Hibernate, JDO和EJB一样的数据持久框架,它将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.

    iBatis2学习笔记

    1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc 4.iBatis2学习笔记:SqlMap的配置总结(18条).doc 5.iBatis2学习笔记:入参和返回值的问题.doc ...

    ibatis学习笔记(一)

    NULL 博文链接:https://microjava.iteye.com/blog/536986

    iBATIS学习笔记(一)查询记录

    e) 在项目中新建实体类Test.java,内容如下: package com.entity; public class StuInfo { private Integer sid; private String stuName; public Integer getSid() { ... public void setSid(Integer sid) { ...

Global site tag (gtag.js) - Google Analytics