了解 ibatis

来源:互联网 发布:云计算教程 百度网盘 编辑:程序博客网 时间:2024/05/22 14:12

 ibatis作为一种现行很流行的数据库访问技术,最近几年在JavaEE企业级开发中应用广泛,它的功能比较强大,能够很好的辅助程序员完成各种常见的数据库访问任务。它实现了部分Hibernate技术无法很好实现的任务。

 以下是我学习ibatis的学习笔记,现发布出来,可能对您有用。

1:相对 Hibernate等“全自动”ORM机制而言,“半自动化”的ibatis 的着力点在于POJO与SQL之间的映射关系,具体的SQL需要程序员编写。
2:ibatis 的执行需要配置:一个ibatis 配置文件(通常叫做:SqlMapConfig.xml,里面声明了多个ibatis映射文件,例如:<sqlMap

resource="com/ibatis/sample/User.xml"> );
一个POJO类;一个ibatis映射文件(具体的sql操作语句)。
3:ibatis 的应用代码示例;
 
  String resource = "com/ibatis/sample/SqlMapConfig.xml";
  Reader reader ;
  reader = Resource.getResourceAsReader(resource);
  XmlSqlMapClientBuilder xmlbuilder = new XmlSqlMapClientBuilder();
  SqlMapClient sqlMap = xmlBuilder.builderSqlMap(reader);
  // 其中,SqlMapClient 是 ibatis 运作的核心,所有操作均通过 它 的实例完成。
  // sqlMap 系统初始化完毕,开始执行update 操作
 
try{
 sqlMap.startTrasaction(); 

 User user = new User();
 user.setId(new Integer(1));
 user.setName("Kernel Sun");

 sqlMap.update("updateUser",user);
 sqlMap.commitTransaction();
 }
 finally{
  sqlMap.endTransaction();
 }
// 如果没有预先执行 startTrasaction 时,事务提交模式 默认为 auto_commit 模式。

4:我们也可以将包含了参数数据的Map对象传递给Statement,如:
   parameterClass = "java.util.Map"
   这时传入的参数就是一个Map对象了,ibatis将以key "name"从中提取对应的参数值。
   当然我们也可以在resultClass中设定返回类型为Map,返回的结果将以各字段名为Key保存在Map中。

5:parameterMap 和 resultMap 允许程序员自己配置POJO 到数据库表字段的具体映射关系。配置完后就可以在 Statement头申明中用 id去引用它们了。 

  而 parameterClass 和 resultClass 则会自行进行字段到POJO属性的关联。

   一般而言,对于 insert delete update select 语句,优先采用 parameterClass 和 resultClass 。

6:在需要处理大批量的观念数据时,建议采用存储过程集中处理,这样性能可以得以提升。

7:ibatis提供了丰富的判断节点:
  一元判定:
  <idPropertyAvailable><isNull><isNotNUll><idEmpty><idNotEmpty>

  二元判定:有两个判定参数,一个是属性名,一个是判定值:
  <isEqual><isNotEqual><isGreaterThan><isGreaterEqual><isLessThan><isLessEqual>
  eg:
  <isGreaterThan prepand="AND" property="age" compareValue="18">
    ( age=#age# )
  </isGreaterThan>

8: 对于多条SQL组合而成的一个JDBC事务操作而言,必须使用 startTrasaction committ rollback endTransaction
  等操作实现整体事务的原子性。