论坛首页 Java企业应用论坛

iBATIS评价

浏览 55326 次
锁定老帖子 主题:iBATIS评价
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-15  
为什么我使用的时候使用(+)没有出错呢?
用的是ibatis 2.09 + ojdbc1.4 +oracle9.2
0 请登录后投票
   发表时间:2005-03-30  
引用

四,ibatis的DAO框架必须要继承它的基类,传入DaoManager接口,这比较烦躁,实在不好与原有系统挂接。

这一点有些牵强了吧,没人要你必须用iBATIS的DAO框架,它只是为你提供一些方便而已,你也可以自行管理你的Dao类啊。
0 请登录后投票
   发表时间:2005-04-08  
ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug
0 请登录后投票
   发表时间:2005-04-11  
凤舞凰扬 写道
CURD是可以自动生成,也比较容易,可ibatis就没有做,这种也还是需要字段匹配的,关一个工具类,太弱了。
   ibatsi的另一个问题就是,怎么在配置文件的SQL中表示oracle的左右链接呢?oracle的左右链接是用(+)来表示的,不是用left/right join,如果直接这么写(+),会错,搞不懂该怎么写。
   再一个问题就是当匹配的一个字段为null的时候,必须要在配置文件中设置动态生成sql或者加上默认值,这也太麻烦了吧?一个表单中,限制输入的字段毕竟占少数啊!
     当然,也许是我不熟悉吧

9i支持left/right join
0 请登录后投票
   发表时间:2005-04-18  
mooniscrazy 写道
ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug


你这个问题是个伪问题。
布尔类型的空值语义是什么?"未知"?用空值来表示“未知”状态?
那样的话,你需要的是一个三值逻辑,而不是布尔类型。或者说,把一个没有默认值的类型建模为布尔类型,本来就是你的问题。
0 请登录后投票
   发表时间:2006-12-29  
凤舞凰扬 写道
CURD是可以自动生成,也比较容易,可ibatis就没有做,这种也还是需要字段匹配的,关一个工具类,太弱了。
   ibatsi的另一个问题就是,怎么在配置文件的SQL中表示oracle的左右链接呢?oracle的左右链接是用(+)来表示的,不是用left/right join,如果直接这么写(+),会错,搞不懂该怎么写。
   再一个问题就是当匹配的一个字段为null的时候,必须要在配置文件中设置动态生成sql或者加上默认值,这也太麻烦了吧?一个表单中,限制输入的字段毕竟占少数啊!
     当然,也许是我不熟悉吧



工具是有的,你没找到而已.
0 请登录后投票
   发表时间:2006-12-29  
mooniscrazy 写道
ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug


超弱的设计错误。

bool表示的是“非此即彼”的状态,比如会员肯定是“激活”“不激活”两种状态,应该是有默认值,而不是空值。难道连这个都要讲解一番?
0 请登录后投票
   发表时间:2006-12-29  
正在学ibatis, 看演示例子JPetStore, 迷迷糊糊的, 只怪Struts不会, 没办法, 顺便把Struts也学了!
0 请登录后投票
   发表时间:2006-12-31  
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="XCKINDCATENA" >
  <resultMap id="abatorgenerated_XckindcatenaResult" class="com.xcdata.objectm.Xckindcatena" >
    <result column="KINDID" property="kindid" jdbcType="DECIMAL" />
    <result column="REGID" property="regid" jdbcType="DECIMAL" />
    <result column="KIND" property="kind" jdbcType="VARCHAR" />
    <result column="REMARK" property="remark" jdbcType="VARCHAR" />
    <result column="CATENAID" property="catenaid" jdbcType="DECIMAL" />
    <result column="CATENA" property="catena" jdbcType="VARCHAR" />
    <result column="COMMUSE" property="commuse" jdbcType="VARCHAR" />
    <result column="CREMARK" property="cremark" jdbcType="VARCHAR" />
  </resultMap>

  <select id="selectByRegid" resultMap="abatorgenerated_XckindcatenaResult" parameterClass="com.xcdata.objectm.Xckindcatena" >
    select a.KINDID, a.REGID, a.KIND, a.REMARK, b.CATENAID,  b.CATENA, b.COMMUSE, b.REMARK CREMARK
      from xckind a, xccatena b
     where a.kindid = b.kindid(+)
    <dynamic prepend="" >
      <isNotNull prepend=" and " property="regid" >
        REGID = #regid:DECIMAL#
      </isNotNull>
      <isNotNull prepend=" and " property="catena" >
        CATENA like '%'||#catena:VARCHAR#||'%'
      </isNotNull>
    </dynamic>
     order by a.KINDID
  </select>

  <select id="selectByKindid" resultMap="abatorgenerated_XckindcatenaResult" parameterClass="java.lang.Integer" >
    select a.KINDID, a.REGID, a.KIND, a.REMARK, b.CATENAID,  b.CATENA, b.COMMUSE, b.REMARK CREMARK
      from xckind a, xccatena b
     where a.kindid = b.kindid(+) and a.kindid = #kindid:DECIMAL#
  </select>

  <select id="selectByCatenaid" resultMap="abatorgenerated_XckindcatenaResult" parameterClass="java.lang.Integer" >
    select a.KINDID, a.REGID, a.KIND, a.REMARK, b.CATENAID,  b.CATENA, b.COMMUSE, b.REMARK CREMARK
      from xckind a, xccatena b
     where a.kindid = b.kindid and b.catenaid = #catenaid:DECIMAL#
  </select>

  <update id="updateKindByPrimary" parameterClass="com.xcdata.objectm.Xckindcatena" >
    update XCKIND
    <dynamic prepend="set" >
      <isNotNull prepend="," property="regid" >
        REGID = #regid:DECIMAL#
      </isNotNull>
      <isNotNull prepend="," property="kind" >
        KIND = #kind:VARCHAR#
      </isNotNull>
      <isNotNull prepend="," property="remark" >
        REMARK = #remark:VARCHAR#
      </isNotNull>
    </dynamic>
    where KINDID = #kindid#
  </update>

  <update id="updateCatenaByPrimary" parameterClass="com.xcdata.objectm.Xckindcatena" >
    update XCCATENA
    <dynamic prepend="set" >
      <isNotNull prepend="," property="kindid" >
        KINDID = #kindid:DECIMAL#
      </isNotNull>
      <isNotNull prepend="," property="catena" >
        CATENA = #catena:VARCHAR#
      </isNotNull>
      <isNotNull prepend="," property="commuse" >
        COMMUSE = #commuse:VARCHAR#
      </isNotNull>
      <isNotNull prepend="," property="cremark" >
        CREMARK = #cremark:VARCHAR#
      </isNotNull>
    </dynamic>
    where CATENAID = #catenaid#
  </update>

  <select id="selectAllKindByRegid" resultMap="SELECTLIST.PagSelect_2" parameterClass="java.lang.Integer" >
    select a.KINDID value, a.KIND name
      from xckind a
     where a.regid = #regid:DECIMAL#
  </select>

  <insert id="insertKind" parameterClass="com.xcdata.objectm.Xckindcatena" >
    <selectKey resultClass="java.lang.Integer" keyProperty="kindid" >
      select xckind_seq.nextval as kindid from dual
    </selectKey>  
    insert into XCKIND (KINDID, REGID, KIND, REMARK)
    values (#kindid:DECIMAL#, #regid:DECIMAL#, #kind:VARCHAR#, #remark:VARCHAR#)
  </insert>

  <delete id="deleteByKindPrimaryKey" parameterClass="java.lang.Integer" >
    delete from XCKIND
    where KINDID = #kindid:DECIMAL#
  </delete>

</sqlMap>



这些是本人下在开发中的ibatis的配置文件,这些都可以用Eclipse+Ibatis插件自动生成,不见得有各位说得如此复杂.感觉很容易上手啊.本人的数据库也是ORACLE 9i 在语句里可以直接用(+) ,而且可能自动判断传和的参数.其实当中有很多的功能,见意大家要看一下IBATIS的文档.
0 请登录后投票
   发表时间:2007-01-29  
感觉插件不好用
0 请登录后投票
论坛首页 Java企业应用版

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