锁定老帖子 主题:iBATIS评价
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-03-15
为什么我使用的时候使用(+)没有出错呢?
用的是ibatis 2.09 + ojdbc1.4 +oracle9.2 |
|
返回顶楼 | |
发表时间:2005-03-30
引用 四,ibatis的DAO框架必须要继承它的基类,传入DaoManager接口,这比较烦躁,实在不好与原有系统挂接。 这一点有些牵强了吧,没人要你必须用iBATIS的DAO框架,它只是为你提供一些方便而已,你也可以自行管理你的Dao类啊。 |
|
返回顶楼 | |
发表时间:2005-04-08
ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug
|
|
返回顶楼 | |
发表时间:2005-04-11
凤舞凰扬 写道 CURD是可以自动生成,也比较容易,可ibatis就没有做,这种也还是需要字段匹配的,关一个工具类,太弱了。
ibatsi的另一个问题就是,怎么在配置文件的SQL中表示oracle的左右链接呢?oracle的左右链接是用(+)来表示的,不是用left/right join,如果直接这么写(+),会错,搞不懂该怎么写。 再一个问题就是当匹配的一个字段为null的时候,必须要在配置文件中设置动态生成sql或者加上默认值,这也太麻烦了吧?一个表单中,限制输入的字段毕竟占少数啊! 当然,也许是我不熟悉吧 9i支持left/right join |
|
返回顶楼 | |
发表时间:2005-04-18
mooniscrazy 写道 ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug
你这个问题是个伪问题。 布尔类型的空值语义是什么?"未知"?用空值来表示“未知”状态? 那样的话,你需要的是一个三值逻辑,而不是布尔类型。或者说,把一个没有默认值的类型建模为布尔类型,本来就是你的问题。 |
|
返回顶楼 | |
发表时间:2006-12-29
凤舞凰扬 写道 CURD是可以自动生成,也比较容易,可ibatis就没有做,这种也还是需要字段匹配的,关一个工具类,太弱了。
ibatsi的另一个问题就是,怎么在配置文件的SQL中表示oracle的左右链接呢?oracle的左右链接是用(+)来表示的,不是用left/right join,如果直接这么写(+),会错,搞不懂该怎么写。 再一个问题就是当匹配的一个字段为null的时候,必须要在配置文件中设置动态生成sql或者加上默认值,这也太麻烦了吧?一个表单中,限制输入的字段毕竟占少数啊! 当然,也许是我不熟悉吧 工具是有的,你没找到而已. |
|
返回顶楼 | |
发表时间:2006-12-29
mooniscrazy 写道 ibatis对空值的处理是个大问题。比如说int类型可以用个-9999表示空值,那么布尔类型怎么办?用什么表示空值呢?难道不要布尔类型了?这个问题在框架设计时就是个bug
超弱的设计错误。 bool表示的是“非此即彼”的状态,比如会员肯定是“激活”“不激活”两种状态,应该是有默认值,而不是空值。难道连这个都要讲解一番? |
|
返回顶楼 | |
发表时间:2006-12-29
正在学ibatis, 看演示例子JPetStore, 迷迷糊糊的, 只怪Struts不会, 没办法, 顺便把Struts也学了!
|
|
返回顶楼 | |
发表时间: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的文档. |
|
返回顶楼 | |
发表时间:2007-01-29
感觉插件不好用
|
|
返回顶楼 | |