mybatis关联查询为什么会出现无限循环的结果,急!!!

ShiPengJiang 2016-12-05 01:48:25
<resultMap id="BaseResultMap" type="com.jeeplus.modules.sys.entity.ldMenu" >
<id column="NODECODE" property="nodecode" jdbcType="VARCHAR" />
<result column="NODELEVEL" property="nodelevel" jdbcType="VARCHAR" />
<result column="NODENAME" property="nodename" jdbcType="VARCHAR" />
<result column="CHILDFLAG" property="childflag" jdbcType="VARCHAR" />
<result column="NODEKEY" property="nodekey" jdbcType="VARCHAR" />
<result column="RUNSCRIPT" property="runscript" jdbcType="VARCHAR" />
<result column="NODEDESCRIPTION" property="nodedescription" jdbcType="VARCHAR" />
<result column="NODESIGN" property="nodesign" jdbcType="VARCHAR" />
<result column="NODEORDER" property="nodeorder" jdbcType="DECIMAL" />
<result column="STATUS" property="status" jdbcType="VARCHAR" />
<result column="OPERATOR" property="operator" jdbcType="VARCHAR" />
<result column="MAKEDATE" property="makedate" jdbcType="DATE" />
<result column="MAKETIME" property="maketime" jdbcType="VARCHAR" />
<result column="MODIFYDATE" property="modifydate" jdbcType="DATE" />
<result column="MODIFYTIME" property="modifytime" jdbcType="VARCHAR" />
<result column="IS_SHOW" property="isShow" jdbcType="CHAR"/>
<result column="PERMISSION" property="permission" jdbcType="VARCHAR"/>

<!-- 查询父模块-->
<association property="parent" column="PARENTNODECODE" select="getParent" />

<!-- 查询子模块 -->
<collection property="children" column="NODECODE" select="getChildren" />
</resultMap>
<sql id="Base_Column_List" >
a.NODECODE, a.PARENTNODECODE AS "parent.nodecode", a.NODELEVEL, a.NODENAME, a.CHILDFLAG, a.NODEKEY, a.RUNSCRIPT, a.NODEDESCRIPTION,
a.NODESIGN, a.NODEORDER, a.STATUS, a.OPERATOR, a.MAKEDATE, a.MAKETIME, a.MODIFYDATE, a.MODIFYTIME,p.name AS "parent.name"
</sql>

<sql id="menuJoins">
LEFT JOIN TBL_LDMENU p ON p.nodecode = a.PARENTNODECODE
</sql>

<!-- 根据父id查询所有父菜单 -->
<select id="getChildren" parameterType="String" resultMap="BaseResultMap">
select * from TBL_LDMENU where PARENTNODECODE = #{nodecode} order by nodeorder
</select>
<!-- 根据id查询所有的菜单 -->
<select id="getParent" parameterType="String" resultMap="BaseResultMap">
select * from TBL_LDMENU where nodecode = #{nodecode}
</select>
...全文
714 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
number1170196649 2018-12-10
  • 打赏
  • 举报
回复
我也出现这种情况,如何避免?比如用户中有个部门,部门中有多个用户,查询部门的时候竟然出现死循环现象。
BigBug博客 2018-05-09
  • 打赏
  • 举报
回复
我觉得我表达的不是很清楚
BigBug博客 2018-05-09
  • 打赏
  • 举报
回复
检查一下是否有关联查询的条件为查询所有数据了,就会出现类似死循环的效果,比如表1的某个编号去查表2的Id,这个条件一直被满足就会循环查询出所有的关联数据
BigBug博客 2018-05-09
  • 打赏
  • 举报
回复
我也遇到过这种情况,就是mybatis的一对多或者一对一映射的时候,原因是关联表的数据过多,而某一个关联条件达到了类似(where 1=1)这种情况,就会查询出所有的关联数据,看起来就像是在死循环(因为数据过多,一时间查询不完,而mybatis的这个一对多映射查询本来就会去执行条件循环查询)
街头小贩 2016-12-06
  • 打赏
  • 举报
回复
一个表实现无限级菜单?

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧