两个mybatis下的sql例子

一、根据id不完全删除(删除一部分保留一部分)
  <delete id="delete" parameterType="String">
		UPDATE SYS_DEPT
		SET 
			DELETE_FLAG = '1',
			UPDATE_TIME = sysdate
		WHERE DELETE_FLAG = '0'
		<foreach collection="array" index="index" item="item" open="" separator="" close="">  
			and ID NOT IN(select du.dept_id from SYS_USER u,SYS_DEPT_USER du where u.id = du.user_id and u.delete_flag = 0 and du.dept_id in (#{item}) group by du.dept_id)
   		</foreach>
   		
   		<foreach collection="array" index="index" item="item" open="" separator="" close="">  
			and ID NOT IN(select d.parent_id from SYS_DEPT d where d.delete_flag = 0 and d.parent_id in (#{item}) group by d.parent_id)
   		</foreach>
   		
			AND ID IN 
		<foreach collection="array" index="index" item="item" open="(" separator="," close=")">  
            #{item}
   		</foreach>
	</delete>

注: #{item}为一个数组参数

二、分别根据不同条件查数据,获得一个list,元素为每个查询的结果条目数,多用于校验

  <!-- 校验中文名和英文名是否存在 返回长度为2的list -->
	<select id="getMenuCnameAndEnameCount" parameterType="com.ebon.platform.menu.vo.SysMenu"
		resultType="Integer">
		SELECT
		COUNT(ID)
		FROM SYS_MENU M
		WHERE M.CNAME = #{cname}
		AND M.PARENT_ID =
		#{parentId}
		AND M.DELETE_FLAG = 0
		<if test="null!=id and id!=''">
			AND M.ID <![CDATA[<]]> <![CDATA[>]]>
			#{id}
		</if>
		UNION ALL
		SELECT
		COUNT(ID)
		FROM SYS_MENU M
		WHERE M.ENAME = #{ename}
		AND M.PARENT_ID =
		#{parentId}
		AND M.DELETE_FLAG = 0
		<if test="null!=id and id!=''">
			AND M.ID <![CDATA[<]]> <![CDATA[>]]>
			#{id}
		</if>
	</select>

注:不等于<>,在mybatis中需要转义 用<![CDATA[<]]> 分别对大于和小于转义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值