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条)

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大