babo122 2010-07-30 12:14
浏览 228
已采纳

有个ibatis的xml,实在不知道如何解读,请大家帮忙看看

我刚接触ibatis,最近在项目里发现一个读取树节点的ibatis的xml,请问要怎么分析它到底像oracle数据库提交的是什么sql?


<!-- 根据角色列表获取指定机构ID的所有下级组织信息(树形结构) -->
<select id="getAllChildrenOrgs" parameterClass="java.util.HashMap" resultMap="orgMap">
<![CDATA[
SELECT * FROM (
SELECT * FROM
]]>
<isEmpty property="roleList">
(
SELECT DISTINCT ORG_ID,PARENT_ID,ORG_NO,DXP_CODE,ORG_NAME,BRIEFNAME,ORG_TYPE_SIGN,USED_STATE,
IS_DUMMYORG,ORG_LEVEL,SORT_NO,ADDRESS,REMARK,SETUP_DATE,CREATE_TIME,CREATOR,MODIFY_TIME,MODIFY_USER,
EXTEND_1,EXTEND_2,EXTEND_3,EXTEND_4,EXTEND_5,'1' HASRIGHT
FROM EIC_ORG
)
</isEmpty>
<isNotEmpty property="roleList">
(
SELECT T.*,decode(T1.ORG_ID,NULL,'0','1') HASRIGHT FROM
(
SELECT DISTINCT ORG_ID,PARENT_ID,ORG_NO,DXP_CODE,ORG_NAME,BRIEFNAME,ORG_TYPE_SIGN,USED_STATE,
IS_DUMMYORG,ORG_LEVEL,SORT_NO,ADDRESS,REMARK,SETUP_DATE,CREATE_TIME,CREATOR,MODIFY_TIME,MODIFY_USER,
EXTEND_1,EXTEND_2,EXTEND_3,EXTEND_4,EXTEND_5
FROM EIC_ORG
CONNECT BY PRIOR PARENT_ID = ORG_ID
START WITH ORG_ID IN (SELECT ORG_ID FROM EIC_RIGHT_ROLE_AREA_RANGE WHERE ROLE_ID IN
<iterate property="roleList" open="(" close=")" conjunction=",">
<![CDATA[
#roleList[].roleId#
]]>
</iterate>
)
UNION
SELECT DISTINCT ORG_ID,PARENT_ID,ORG_NO,DXP_CODE,ORG_NAME,BRIEFNAME,ORG_TYPE_SIGN,USED_STATE,
IS_DUMMYORG,ORG_LEVEL,SORT_NO,ADDRESS,REMARK,SETUP_DATE,CREATE_TIME,CREATOR,MODIFY_TIME,MODIFY_USER,
EXTEND_1,EXTEND_2,EXTEND_3,EXTEND_4,EXTEND_5
FROM EIC_ORG
CONNECT BY PRIOR ORG_ID = PARENT_ID
START WITH ORG_ID IN (SELECT ORG_ID FROM EIC_RIGHT_ROLE_AREA_RANGE WHERE ROLE_ID IN
<iterate property="roleList" open="(" close=")" conjunction=",">
<![CDATA[
#roleList[].roleId#
]]>
</iterate>
)
) T,
(
SELECT DISTINCT ORG_ID
FROM EIC_ORG
CONNECT BY PRIOR ORG_ID = PARENT_ID
START WITH ORG_ID IN (SELECT ORG_ID FROM EIC_RIGHT_ROLE_AREA_RANGE WHERE ROLE_ID IN
<iterate property="roleList" open="(" close=")" conjunction=",">
<![CDATA[
#roleList[].roleId#
]]>
</iterate>
)
) T1
WHERE T.ORG_ID = T1.ORG_ID(+)
)
</isNotEmpty>
<isEqual property="isUsed" compareValue="true">
WHERE USED_STATE = '1'
</isEqual>
<![CDATA[
)
CONNECT BY PRIOR ORG_ID = PARENT_ID
START WITH
]]>
<isEqual property="isSelf" compareValue="true">
ORG_ID = #orgId#
</isEqual>
<isNotEqual property="isSelf" compareValue="true">
PARENT_ID = #orgId#
</isNotEqual>
<![CDATA[
ORDER SIBLINGS BY SORT_NO
]]>
</select>
  • 写回答

9条回答 默认 最新

  • iteye_6289 2010-07-30 12:14
    关注

    这和读程序一样的。

    if(rolelist 为null)
    select 语句

    else

    另外的select

    .......

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码