逻辑删除设备:(数据表中还有这条记录,不显示出来)

思路:

数据表加个字段display,值为Y/N,只显示display为Y的,
删除时,把display的值改为N,就不会显示出来

 

jsp页面如下图,要获取选中的复选框,把选中的id传给SpringMVC的Controller

 

 完整流程如下:

1、sbgl_list.jsp 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!doctype html>

<c:set var="ctx" value="${pageContext.request.contextPath}" scope="session"/>

<html>
<head>
   <title>设备管理</title>
   
    
   <script type="text/javascript">

   function console(consoleTag, sbbm, stateTag) {

        //table表中选中的复选框赋值给checkedSubject
        var checkedSubject = $('#showSbgl input[name=checkIds]:checkbox:checked');
        var checkedIds="";
        //循环获取选中的复选框的value,这个value是数据表中每条记录的主键${sbgl.sbbm},传给后台,后台就能根据主键查找到数据表的相应记录
     //将其value用逗号隔开拼接成一个字符串 checkedSubject.each(function() { checkedIds
=checkedIds+","+$(this).val(); });
    //上面的字符串赋值给隐藏域表单 $(
'#checkedIds').val(checkedIds); // 添加。 if("add" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_add_list"); } // 更新。 if("update" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_update_list"); } //删除 if("delete" == consoleTag) { $('#formid').prop("action", "${ctx}/sbgl/sbgl_delete_list"); }
     //提交隐藏域表单,后台才能获取隐藏域表单的值 $(
'#formid').submit(); } /** * 搜索。 */ function search() { $('#searchForm').submit(); } </script> </head> <body> <div class="clear"> <div class="panel panel-default yogurt_route" id="yogurt_route"> <a href="${ctx }/home/home_list">首页</a> > <a href="javascript:void(0);" onclick="navigate();">设备管理</a> > 设备列表 </div> </div> <!-- 新增、删除 --> <div class="panel panel-default" style="margin-top:10px"> <div class="yogurt_panel_title_core"> <span class="state_bold">共查询出数据结果:<span class="state_red">${resultMap.totalNum}</span>条</span> </div> <div class="more_core3"> <button type="button" class="btn btn-success yogurt_search_button2" onclick="console('add','');">新增设备</button> <button type="button" class="btn btn-success yogurt_search_button2" onclick="console('delete','');">删除设备</button> </div> </div> <!-- 列表 --> <div class="yogurt_elementsbox_core clear"> <div class="yogurt_elementsbox_table_article" id="yogurt_elementsbox_table_article"> <table id="showSbgl" border="0" cellspacing="0" cellpadding="0" class="table yogurt_elementsbox_table"> <thead> <tr class="yogurt_tab_back" onmouseover="this.className='yogurt_tab_trhover'" onmouseout="this.className='yogurt_tab_back'"> <th width="3%"><input type="checkbox" name="sbglId" onClick="allchecked(this)"></th> <th width="10%">设备名称</th> <th width="10%">设备类型</th> <th width="10%">所属市县</th> </tr> </thead> <tbody id="sbglTb"> <c:forEach var="sbgl" items="${resultMap.resultList}" varStatus="status"> <tr> <td><input type="checkbox" id="checkIds" name="checkIds" value=${sbgl.sbbm }></td> <td>${sbgl.sbmc }</td> <td>${sbgl.sblx }</td> <td>${sbgl.sssx }</td> </tr> </c:forEach> </tbody> </table> </div> </div> <%-- 隐藏域表单 --%> <form action="" method="post" id="formid"> <input type="hidden" name="sbbm" id="sbbm" /> <input type="hidden" name="checkedIds" id="checkedIds" /> </form> </body> </html>

 2、SbglController.java 

 Spring Data JPA数据访问操作框架

package com.jinhetech.yogurt.sbgl.controller;

@Controller("sbglController")
@RequestMapping("/sbgl")
public class SbglController extends BaseController {

    @Resource(name = "sbglService")
    private SbglService sbglService;

    /**
     * 查询设备信息列表(支持分页和多条件查询)。
     * 
     * @author YangZhenghua 2014-5-28
     * @throws Exception
     */
    @RequestMapping("sbgl_list")
    @RequiresRoles("sbgl/sbgl_list")
    public String getSbglList(Model model) throws Exception {
        
        Map<String, Object> resultMap = null;
        //serArgs里存着前台传来的查询时的where条件字段(根据条件搜索)
        Map<String, String> serArgs = new HashMap<String, String>();
        serArgs = SbglUtil.getSelArgsToMap(request);
        resultMap = sbglService.getSbglBySearch(serArgs, "azsj");
        
        model.addAttribute("resultMap", resultMap);
        return "sbgl/sbgl_list";
    }



    
    /**
     * 逻辑删除设备,就是把数据表对应要删除的记录的display字段设为N,
     * 查询时,加个where条件,只查询display为"Y"的即可
     */
    @RequestMapping("sbgl_delete_list")
    @RequiresRoles("sbgl/sbgl_delete_list")
    public String getDeleteList(Model model) throws Exception {
        
        String id=request.getParameter("checkedIds");    //获取前台隐藏域存着的选中的复选框的value
        String checkedIds[]=id.split(",");  //进行分割存到数组
        String temp="";
        Sbgl sbgl;
        
        for(int i =0;i<checkedIds.length;i++){
            if(!checkedIds[i].equals("")){
                System.out.println(checkedIds[i]);
                temp=checkedIds[i];
                sbgl=sbglService.getById(temp);    //根据ID获取数据表中这条ID的整条记录
                sbgl.setDisplay("N");    //更改这个ID的display字段的值
                sbglService.save(sbgl);    //保存更改
            }
        }

        return getSbglList(model);//返回sbgl_list页面的处理方法
    }

}

 

 

3、SbglService.java

package com.jinhetech.yogurt.sbgl.service;

public interface SbglService {

    public Sbgl save(Sbgl sbgl) throws Exception;
    
    public Map<String, Object> getSbglBySearch(Map<String, String> serArgs, final String sortType) throws Exception;
    
    //根据id查询所有设备信息
    public Sbgl getById(String id) throws Exception;
    
}

 

4、SbglServiceImpl.java

package com.jinhetech.yogurt.sbgl.service.impl;

@Service("sbglService")
@Transactional
public class SbglServiceImpl implements SbglService{

    @Resource(name = "sbglDao")
    private SbglDao sbglDao;
    

    public Sbgl save(Sbgl sbgl) throws Exception {
        return sbglDao.save(sbgl);
    }
    
    
    /**
     * 查询用户信息列表(支持分页和多条件查询)。
     * 
     * Spring Data JPA知识
     */
    public Map<String, Object> getSbglBySearch(final Map<String, String> serArgs, final String sortType) throws Exception {

        // 获得分页对象pageable,并且在pageable中页码是从0开始,设定按照sortType升序排列
        Pageable pageable = PageUtils.buildPageRequest(Integer.valueOf(serArgs.get("pageNum")),
                Integer.valueOf(serArgs.get("pageSize")), sortType);

        Page<Sbgl> objPage = sbglDao.findAll(new Specification<Sbgl>() {

            public Predicate toPredicate(Root<Sbgl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> lstPredicates = new ArrayList<Predicate>();

                if (TextUtils.isNotBlank(serArgs.get("serSbmc"))) {
                    lstPredicates.add(cb.like(root.get("sbmc").as(String.class), "%" + serArgs.get("serSbmc") + "%"));
                }
                if (TextUtils.isNotBlank(serArgs.get("serSblx"))) {
                    lstPredicates.add(cb.like(root.get("sblx").as(String.class), "%" + serArgs.get("serSblx") + "%"));
                }
                if (TextUtils.isNotBlank(serArgs.get("serSssx"))) {
                    lstPredicates.add(cb.like(root.get("sssx").as(String.class), "%" + serArgs.get("serSssx") + "%"));
                }
                if (TextUtils.isNotBlank(serArgs.get("serJdmc"))) {
                    lstPredicates.add(cb.like(root.get("ssjd").as(String.class), "%" + serArgs.get("serJdmc") + "%"));
                }

                if (TextUtils.isNotBlank(serArgs.get("serSbzt"))) {
                    lstPredicates.add(cb.equal(root.get("sbzt"), serArgs.get("serSbzt")));
                }
                //只显示display等于'Y'的记录
                lstPredicates.add(cb.equal(root.get("display"), serArgs.get("display")));
                        
                Predicate[] arrayPredicates = new Predicate[lstPredicates.size()];
                return cb.and(lstPredicates.toArray(arrayPredicates));
            }
        }, pageable);

        return PageUtils.getPageMap(objPage);
    }

    
    public Sbgl getById(String id) throws Exception {
        return sbglDao.findOne(id);
    }
    
    
}

 

 5、DAO:

package com.jinhetech.yogurt.sbgl.dao;


@Repository("sbglDao")
public interface SbglDao extends PagingAndSortingRepository<Sbgl, String>, JpaSpecificationExecutor<Sbgl> {
    
    
}

 

 

6、SbglUtil.java

package com.jinhetech.yogurt.sbgl.util;


/**
 * 用户功能模块工具类。
 * 
 */
public class SbglUtil {

    /**
     * 封装从前台传递过来的查询参数。
     * 
     * @author YangZhenghua
     * @date 2014-6-26
     */
    public static Map<String, String> getSelArgsToMap(HttpServletRequest request) throws Exception {
        Map<String, String> serArgs = new HashMap<String, String>();

        String serSbmc = request.getParameter("serSbmc");
        String serSblx = request.getParameter("serSblx");
        String serSssx = request.getParameter("serSssx");
        String serJdmc = request.getParameter("serJdmc");
        String serSbzt = request.getParameter("serSbzt");
        
        String display="Y";
        
        String pageNum = request.getParameter("pageNum") == null ? "1" : request.getParameter("pageNum");
        String pageSize = request.getParameter("pageSize") == null ? "10" : request.getParameter("pageSize");

        serArgs.put("serSbmc", serSbmc);
        serArgs.put("serSblx", serSblx);
        serArgs.put("serSssx", serSssx);
        serArgs.put("serJdmc", serJdmc);
        serArgs.put("serSbzt", serSbzt);
        serArgs.put("display", display);
        
        serArgs.put("pageNum", pageNum);
        serArgs.put("pageSize", pageSize);

        return serArgs;
    }




}

 

 posted on 2017-01-13 18:03  布鲁布鲁sky  阅读(9750)  评论(0编辑  收藏  举报