论坛首页 Java企业应用论坛

让你的 Ibatis2 也支持Annotation

浏览 23915 次
精华帖 (0) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-10  
Ibatis 有SQL生成工具可以生成基本的SQL,节省了手工输入,而且比较规范,例如:

vdgame 写道

<sqlMap namespace="WEB_SHOP_NEWS" >
  <resultMap id="abatorgenerated_WebShopNewsResult" class="com.aaaa.data.object.shop.WebShopNews" >
    <result column="SHOP_NEWS_ID" property="shopNewsId" jdbcType="DECIMAL" />
    <result column="REGID" property="regid" jdbcType="DECIMAL" />
    <result column="SHOP_NEWS_NAME" property="shopNewsName" jdbcType="VARCHAR" />
    <result column="SHOP_NEWS_KIND" property="shopNewsKind" jdbcType="VARCHAR" />
    <result column="SHOP_NEWS_DATE" property="shopNewsDate" jdbcType="DATE" />
    <result column="SHOP_NEWS_CLICK" property="shopNewsClick" jdbcType="DECIMAL" />
    <result column="SHOP_NEWS_BIGKIND" property="shopNewsBigkind" jdbcType="DECIMAL" />
    <result column="SHOP_NEWS_SMALLKIND" property="shopNewsSmallkind" jdbcType="DECIMAL" />
    <result column="SHOP_NEWS_KEY" property="shopNewsKey" jdbcType="VARCHAR" />
  </resultMap>
 
  <resultMap id="abatorgenerated_WebShopNewsResultWithBLOBs" class="com. aaaa.data.object.shop.WebShopNews" extends="WEB_SHOP_NEWS.abatorgenerated_WebShopNewsResult" >
    <result column="SHOP_NEWS_CONTENT" property="shopNewsContent" jdbcType="BLOB" />
  </resultMap>

  <select id="select" resultMap="abatorgenerated_WebShopNewsResultWithBLOBs" parameterClass="com. aaaa.data.object.shop.WebShopNews" >
    select SHOP_NEWS_ID, REGID, SHOP_NEWS_NAME, SHOP_NEWS_KIND, SHOP_NEWS_DATE, SHOP_NEWS_CLICK,
      SHOP_NEWS_CONTENT, SHOP_NEWS_BIGKIND, SHOP_NEWS_SMALLKIND, SHOP_NEWS_KEY
    from WEB_SHOP_NEWS
    <dynamic prepend="where">
      <isNotEmpty prepend="and" property="shopNewsId" >
        SHOP_NEWS_ID = #shopNewsId:DECIMAL#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="regid" >
        REGID = #regid:DECIMAL#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="shopNewsName" >
        SHOP_NEWS_NAME = #shopNewsName:VARCHAR#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="shopNewsKind" >
        SHOP_NEWS_KIND = #shopNewsKind:VARCHAR#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="shopNewsBigkind" >
        SHOP_NEWS_BIGKIND = #shopNewsBigkind:DECIMAL#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="shopNewsSmallkind" >
        SHOP_NEWS_SMALLKIND = #shopNewsSmallkind:DECIMAL#
      </isNotEmpty>
      <isNotEmpty prepend="and" property="shopNewsKey" >
        SHOP_NEWS_KEY = #shopNewsKey:VARCHAR#
      </isNotEmpty>
    </dynamic>
  </select>




在XML文件里统一管理SQL,维护还是比较方便的.

0 请登录后投票
   发表时间:2008-10-10  
好恐怖啊.....这样写还有使用ibatis的意义么?
0 请登录后投票
   发表时间:2008-10-10  
binn.zeng 写道
好恐怖啊.....这样写还有使用ibatis的意义么?


呵呵,请教一下,使用Ibatis的意义是?会因为换种方式来定义sql而恐怖吗?那未出笼的Ibatis3如果真的提供了annotation的实现岂不是自毁前程?
0 请登录后投票
   发表时间:2008-10-10  

看来支持的人不多呀!
我阐述一下我的个人观点:iBatis作为半个ORM,是个确实好用的SQL模板引擎。简单易用,容易上手!当你发现有大量的表示SQL的XML文件,要修改某个SQL,很不方便。我个人并不反对Annotation,我认为两者结合是一个比较折中的方案。对于需要DBA审核或者修改比较频繁,可以使用XML;对于程序员比较友好的SQL可以写Annotation,程序员改起来比较方便。

 

0 请登录后投票
   发表时间:2008-10-10  
JDBC多好
0 请登录后投票
   发表时间:2008-10-10  
cnoss 写道
binn.zeng 写道
好恐怖啊.....这样写还有使用ibatis的意义么?


呵呵,请教一下,使用Ibatis的意义是?会因为换种方式来定义sql而恐怖吗?那未出笼的Ibatis3如果真的提供了annotation的实现岂不是自毁前程?



大家有兴趣的可以看看,这不是我的杞人忧天:
http://opensource.atlassian.com/confluence/oss/display/IBATIS/iBATIS+3.0+Whiteboard
0 请登录后投票
   发表时间:2008-10-10  
可怕,如果以后要这样,我还不如用前面的版本。
0 请登录后投票
   发表时间:2008-10-10  
Ibatis最方便的是可以将一些包含业务逻辑的条件写到sql里
虽然这样不利于移植
但很有效率
0 请登录后投票
   发表时间:2008-10-10  
看了这,我宁愿用xml。
0 请登录后投票
   发表时间:2008-10-10  
结构不优雅。我们写代码目的是为了即能说明白,又能运行才佳
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics