邏輯刪除設備:(數據表中還有這條記錄,不顯示出來)javascript
思路:html
數據表加個字段display,值爲Y/N,只顯示display爲Y的,
刪除時,把display的值改成N,就不會顯示出來java
jsp頁面以下圖,要獲取選中的複選框,把選中的id傳給SpringMVC的Controllerapache
完整流程以下:數組
一、sbgl_list.jsp session
<%@ 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>
二、SbglController.java app
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頁面的處理方法 } }
三、SbglService.javajsp
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; }
四、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); } }
五、DAO:
package com.jinhetech.yogurt.sbgl.dao; @Repository("sbglDao") public interface SbglDao extends PagingAndSortingRepository<Sbgl, String>, JpaSpecificationExecutor<Sbgl> { }
六、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; } }