IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Ibatis3功能一览

    longhao (longtask@gmail.com)发表于 2010-04-27 10:28:22
    love 0

    ibatis3的设计相对ibatis2来说改动较大,可以说是在功能和配置继承的基础上翻天覆地的修改,所以:你别指望2个版本是自动兼容的。暴露了更多底层的接口和添加Dynamic SQL的功能提升了其拓展性,但是添加Annotation的功能却是鸡肋。相关的功能点我们还是看看这张图先。

    点击看大图

    新功能点

    1:Dynamic SQL:动态SQL对熟悉JSTL或基于xml的文本处理的程序员来说是很好理解的,采用了基于OGNL的表达式后更是让XML mapper的配置减少到原来的一半。示例代码如下:


    2:Maper Annotations:这个功能比较鸡肋,至少偶是这样认为。程序员在代码中写sql,这个给人的感觉是回到了jdbc的环境中,而且 Annotaciton和java代码高度耦合了,并非配置优先。

    3:SelectBuilder:用java代码来写sql,它使用static import和ThreadLocal变量的方式来保证语法的简介,很容易的去处理交织的条件和SQL格式化。

    public String selectBlogsSql() {
    BEGIN(); // Clears ThreadLocal variable
    SELECT("*");
    FROM("BLOG");
    return SQL();
    }

    表达的结果是:select * from blog;

    4:暴露底层接口:ibatis可以通过实现一些接口来拦截执行某些特定的功能点,默认情况下有4种:

    * Executor(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
    * ParameterHandler(getParameterObject, setParameters)
    * ResultSetHandler(handleResultSets, handleOutputParameters)
    * StatementHandler(prepare, parameterize, batch, update, query)

    具体的实例请看:ibatis user guide

    对入门者的建议:

    1. 当然需要先了解sql map的配置情况,每个标签的一些属性,尤其是需要使用这个标签来减少sql的重复;
    2. 特定的情况实现 TypeHandler这个接口,例如java的对象中的enum对象和数据库字段的对应。oracle数据库的blob字段可以直接找到默认实现 BlobTypeHnadler就好了;
    3. 尽量不要用ibator这个自动工具来生成dao层的代码,这样代码的可维护性过差,但是可以研究下生成的代码;
    4. 了解一些setting的属性,特定功能打开和关闭特定配置。例如cache功能。

    一些问题:

    • 如果你想把ibatis3用到项目中,最好点击这里看看是否有你不能接受的bug吧!
    • 缺少spring框架的集成支持,估计还是需要自己写plugs和spring等框架集成或搜集非官方的文档。
    • 网上资料不全,遇到问题只能跟代码了!

    资源:

    1. ibatis用户导航
    2. iBATIS 3 内的新特性(其实是用户导航的简体中文版的简介)


沪ICP备19023445号-2号
友情链接