zoukankan      html  css  js  c++  java
  • (二十八)分类信息的curd-分类信息删除

    删除分类步骤分析:
            1.在list.jsp上编写 删除连接
                /store/adminCategory?method=delete&cid=??
            2.在delete方法中
                获取cid
                调用service的delete方法
                页面重定向/store/adminCategory?method=findAll
            3.service中delete
                添加事务
                通过cid先更新所有的商品分类信息 ,删除后分类信息为null
                调用dao(商品表、分类表) 删除分类
                事务控制
                清空缓存

    /store/WebContent/admin/category/list.jsp

    /store/src/com/louis/web/servlet/AdminCategoryServlet.java

    /**
         * 删除分类
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        public String delete(HttpServletRequest request, HttpServletResponse response) throws Exception {
            //1.获取cid
            String cid = request.getParameter("cid");
            
            //2.调用service 完成删除
            CategoryService cs=(CategoryService) BeanFactory.getBean("CategoryService");
            cs.delete(cid);
            
            //3.重定向
            response.sendRedirect(request.getContextPath()+"/adminCategory?method=findAll");
            return null;
        }

    /store/src/com/louis/service/impl/CategoryServiceImpl.java

    public void delete(String cid) throws Exception{
            try {
                //1.开启事务
                DataSourceUtils.startTransaction();
    
                //2.更新商品
                ProductDao pd=(ProductDao) BeanFactory.getBean("ProductDao");
                pd.updateCid(cid);
                
                //3.删除分类
                CategoryDao cd=(CategoryDao) BeanFactory.getBean("CategoryDao");
                cd.delete(cid);
                
                //4.事务控制
                DataSourceUtils.commitAndClose();
                
                //5.清空缓存
                CacheManager cm = CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));
                Cache cache = cm.getCache("categoryCache");
                cache.remove("clist");
            } catch (Exception e) {
                e.printStackTrace();
                DataSourceUtils.rollbackAndClose();
                throw e;
            }
            
        }

    /store/src/com/louis/dao/impl/ProductDaoImpl.java

    /**
         * 更新商品的cid 为删除分类的时候准备
         */
        @Override
        public void updateCid(String cid) throws Exception {
            QueryRunner qr = new QueryRunner();
            String sql="update product set cid = null where cid = ?";
            qr.update(DataSourceUtils.getConnection(), sql, cid);
        }

    /store/src/com/louis/dao/impl/CategoryDaoImpl.java

    /**
         * 删除分类
         */
        @Override
        public void delete(String cid) throws Exception {
            QueryRunner qr = new QueryRunner();
            String sql="delete from category where cid = ?";
            qr.update(DataSourceUtils.getConnection(), sql, cid);
            
        }

  • 相关阅读:
    Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
    Mac下安装配置Python2和Python3并相互切换使用
    精通Python自动化脚本
    idea之Git
    python面向对象之:细分类的组成成员
    new string("abc")创建了几个对象
    进程和线程的主要区别
    Leetcode 572 另一个树的子树
    Leetcode 二叉树的坡度
    Leetcode 559 N叉树的最大深度
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7676041.html
Copyright © 2011-2022 走看看