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
等操作实现整体事务的原子性。