<select id="selectTreeByCondition" resultType="com.generalichina.ewmp.api.system.entity.SysMenuEntity"> SELECT distinct t.id as tmpId, t.* FROM SYS_MENU t CONNECT BY PRIOR t.parent_id = t.id START WITH 1 = 1 <if test="data.name!=null and data.name !="""> AND t.name LIKE concat(concat('%', #{data.name}), '%') </if> <if test="data.status!=null"> AND t.status = #{data.status} </if> </select>讲解一下
时间: 2024-02-14 17:14:27 浏览: 45
mybatis-3-config.dtd mybatis-3-mapper.dtd
这是一个 MyBatis 的 SQL 语句,用于查询 SYS_MENU 表中符合条件的数据。其中,使用了 CONNECT BY PRIOR 连接关键词,表示按照 parent_id = id 的关系进行自连接,即查询出所有的子孙节点。START WITH 1 = 1 表示从根节点开始查询。此外,该语句还使用了 IF 标签进行条件判断,根据不同的条件拼接查询条件。如果 data.name 不为 null 且不为空字符串,则拼接以 data.name 为 LIKE 匹配条件的查询条件;如果 data.status 不为 null,则拼接以 data.status 为查询条件的查询条件。最终查询结果使用 SysMenuEntity 类型进行封装返回。
阅读全文