mybatis中能不能一个配置信息里面写多条sql语句

mybatis 专栏收录该内容
14 篇文章 0 订阅

问题来源:在一个项目中,现需要删除开发商信息(仅仅进行逻辑删除,将其有效标志设为0),删除开发商信息之后,该开发商对应的接入系统信息,服务信息,发布者信息都需要进行删除。我在Service中写下

public int deleteKfs(IDTO dto) throws Exception{
		logger.info("根据ID更新有效标志为0");
		Map<String, Object> rtnMap = new HashMap<String, Object>();
		Map<String,Object> paramsMap = dto.getData();
		......
		int del=commDAO.delete(KFSGL + "KFSGL_DKFS", paramsMap);
		......
		return del;
	}

打算直接调用mybatis中的一条配置信息进行所有的"delete"操作,mybatis中的配置如下:

<!-- 删除操作开发商信息操作,直接将不可用状态设置为0,并且将该开发商对应的operator(AAE100),
	             系统接入信息(yxbz),服务信息,订阅者信息,凭证信息全部设为无效 -->
	<update id="KFSGL_DKFS" parameterType="hashmap">
		<!-- 开发商 -->
		update FW_SYPT_KFSJLB  <set> YXBZ='0'   </set>  WHERE ID=#{ID};
		update Fw_sypt_xtjrjlb <set> YXBZ='0'   </set>  WHERE KFSID=#{ID};
		update fw_sypt_fbzjlb  <set> fw_sypt_fbzjlb.yxbz='0' </set> 
		where fw_sypt_fbzjlb.ssxtid = any(select id from Fw_sypt_xtjrjlb where kfsid=#{ID});
		update fw_sypt_pzjlb   <set> fw_sypt_pzjlb.yxbz='0'</set>  
		where fw_sypt_pzjlb.ssxtid = any(select id from Fw_sypt_xtjrjlb where kfsid=#{ID});
		update fw_sypt_dyzjlb  <set> fw_sypt_dyzjlb.yxbz='0' </set>
		where fw_sypt_dyzjlb.ssxtid = any(select id from Fw_sypt_xtjrjlb where kfsid=#{ID})
	</update>	

运行的时候后台报错,提示sql语句错误!!
原因初步判断为:在正式执行的时候,是不能将这个分号扔到Oracle的解析器中的,Oracle的语法解析器特别严格,mybatis中的sql语句末尾不能写分号,因此就规定了一个配置语句中只能有一条sql语句。

最后改成:
Service文件中:

			int del=commDAO.delete(KFSGL + "KFSGL_DKFS", paramsMap);
			commDAO.delete(KFSGL + "KFSGL_DOPER", paramsMap);
			commDAO.delete(KFSGL + "KFSGL_DXTJR", paramsMap);
			commDAO.delete(KFSGL + "KFSGL_DFBZ", paramsMap);
			commDAO.delete(KFSGL + "KFSGL_DPZ", paramsMap);
			commDAO.delete(KFSGL + "KFSGL_DDYZ", paramsMap);

Mapper.xml文件中:

<!-- 删除操作开发商信息操作,直接将不可用状态设置为0,并且将该开发商对应的operator(AAE100),
	             系统接入信息(yxbz),服务信息,订阅者信息,凭证信息全部设为无效 -->
	<update id="KFSGL_DKFS" parameterType="hashmap">
		<!-- 开发商 -->
		update FW_SYPT_KFSJLB  <set> YXBZ='0'   </set>  WHERE ID=#{ID}
	</update>
	
	<!-- 操作员 -->	
	<update id="KFSGL_DOPER" parameterType="hashmap">	
		update FW_OPERATOR  <set> AAE100='0' </set> WHERE POSITION=#{ID}
	</update>
	
	<!-- 系统接入信息 -->
	<update id="KFSGL_DXTJR" parameterType="hashmap">
		update Fw_sypt_xtjrjlb <set> YXBZ='0'   </set>  WHERE KFSID=#{ID}
	</update>
	
	<!-- 发布者 -->	
	<update id="KFSGL_DFBZ" parameterType="hashmap">
		update fw_sypt_fbzjlb  <set> fw_sypt_fbzjlb.yxbz='0' </set> 
		where fw_sypt_fbzjlb.ssxtid = any(select id from Fw_sypt_xtjrjlb where kfsid=#{ID})
	</update>	
		
	<!-- 凭证 -->
	<update id="KFSGL_DPZ" parameterType="hashmap">
		update fw_sypt_pzjlb   <set> fw_sypt_pzjlb.yxbz='0'</set>  
		where fw_sypt_pzjlb.ssxtid = any(select id from Fw_sypt_xtjrjlb where kfsid=#{ID})
	</update>
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值