25_删除分类(一对多的删除)

删除分类(一对多的删除)

1)步骤分析

  1. 在list.jsp上编写,添加删除连接:/store/adminCategory/delete/cid=?
  2. 在delete方法中
    1. 获取cid
    2. 调用Service执行删除delete
    3. 页面重定向到findAll
  3. service中delete(分类和商品表是一对多的关系)
    1. 添加事务
    2. 通过cid先更新所有的商品分类信息
    3. 调用dao删除分类
    4. 事务控制
    5. 清空缓存

2)代码实现

① 在jsp上给删除添加点击事件
	<a href="javascript:void(0);" onclick="deleteC('${c.cid}');">
		<img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand">
	</a>

js:

	<script type="text/javascript">
		function deleteC(cid){
			if(confirm("您确定要删除此分类吗?")){
				location.href="${pageContext.request.contextPath}/adminCategory/delete?cid="+cid;
			}
		}
	</script>
② 在AdminCategoryServlet中处理delete
	private void delete(HttpServletRequest request, HttpServletResponse response) throws Exception{
		//1、获取cid
		String cid=request.getParameter("cid");
		//2、调用service完成删除
		categoryService.delete(cid);
		//3、重定向
		response.sendRedirect(request.getContextPath()+"/adminCategory/findAll");
	}
③ 完成service层
	@Override
	public void delete(String cid) throws Exception{
		
		try {
			//1、开启事务
			DBUtil.startTransaction();
			//2、更新商品
			productDao.updateCid(cid);
			//3、删除分类
			categoryDao.delete(cid);
			//4、事务控制
			DBUtil.commitAndClose();
			//5、清空缓存
			//2.1 创建缓存管理器
			CacheManager cm=CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));
			//2.2 获取指定的缓存
			Cache cache=cm.getCache("categoryCache");
			//2.3 清空缓存
			cache.remove("clist");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			DBUtil.rollbackAndClose();
			throw new MyException();
		}
		
	}
④ 完成dao层

ProductDaoImpl:

	@Override
	public void updateCid(String cid) throws Exception {
		QueryRunner qr1=new QueryRunner();
		String sql="update  product set cid=null where cid=?";
		qr1.update(DBUtil.getConnection(),sql,cid);
	}

CategoryDaoImpl:

	@Override
	public void delete(String cid) throws Exception {
		QueryRunner qr1=new QueryRunner();
		String sql="delete from category where cid=?";
		qr.update(DBUtil.getConnection(),sql,cid);
	}

测试即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值