您的位置:首页 > 其它

了解 ibatis

2009-03-14 16:01 169 查看
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

等操作实现整体事务的原子性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: