实现网页的模糊查询和批量删除

    技术2023-05-04  74

    实现网页的模糊查询和批量删除

    目录

    实现网页的模糊查询和批量删除 模糊查询网页user-list.jspcontroller层serviceimpl层dao层usermapper.xml批量删除修改user-list.xmlcontroller层serviceImpl层DAO层usermapper.xml

    模糊查询

    网页user-list.jsp

    <form action="${pageContext.request.contextPath}/user/findAll.do?type=1" method="post"> <div class="col-md-4 data1"> <input type="text" class="form-control" name="username" placeholder="username" value=""> </div> <button type="submit" class="btn bg-maroon">搜索</button> </form>

    提交表单,获得输入框中的username

    controller层

    @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(defaultValue = "1") int currentPage,String username,@RequestParam(defaultValue = "0") int type,HttpSession session) { if(type==1){ session.setAttribute("searchname",username); }else{ username = (String) session.getAttribute("searchname"); } PageInfo<User> pageInfo=userService.findAll(currentPage,username); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("pageInfo",pageInfo); modelAndView.setViewName("user-list"); return modelAndView; }

    如果是从表单接收的参数,currentPage默认为1,username进行保存。跳转页面时,将username再次使用,此时currentPage改变值

    serviceimpl层

    @Override public PageInfo<User> findAll(int currentPage, String username) { PageInfo<User> pageInfo=new PageInfo<>(); pageInfo.setSize(5); int tc= userDao.getTotalCount(username); pageInfo.setTotalCount(tc); int tp=(int)Math.ceil(tc/5.0); pageInfo.setTotalPage(tp); if(currentPage<1){ pageInfo.setCurrentPage(1); }else if(currentPage>tp){ pageInfo.setCurrentPage(tp); }else{ pageInfo.setCurrentPage(currentPage); } int start=(pageInfo.getCurrentPage()-1)*5; List<User> userList = userDao.findAll(start,username); pageInfo.setList(userList); return pageInfo; }

    findAll方法多了一个String的参数,进行修改

    dao层

    List<User> findAll(@Param("start") int start, @Param("username") String username);

    dao层也需要修改

    usermapper.xml

    <select id="findAll" resultType="user"> select * from tb_user <if test="username!=null and username!=''"> where username like concat("%",#{username},"%") </if> limit #{start},5 </select>

    ("%",#{username},"%")的含义是包含所输入的字符的用户信息。这样模糊查询已经实现。

    批量删除

    修改user-list.xml

    <button type="button" name="delete" class="btn btn-default" title="删除" onclick="deleteAll()"> <i class="fa fa-refresh"></i> 删除 </button> function deleteAll() { var checkedNum=$("input[name='ids']:checked").length; if(checkedNum==0){ alert("请至少选择一个进行删除!"); return; } if(confirm("确认要删除这些用户吗?")){ var userList=new Array(); $("input[name='ids']:checked").each( function () { userList.push($(this).val()) } ); } alert(userList); $.ajax({ type:"post", url: "${pageContext.request.contextPath}/user/deleteAll.do", data:{userList:userList.toString()}, success:function () { alert("删除成功"); location.reload(); }, error:function () { alert("删除失败"); } }); }

    controller层

    @RequestMapping("/deleteAll.do") public String deleteAll(String userList){ String[] strs= userList.split(","); List<Integer> ids=new ArrayList<>(); for(String s:strs) { ids.add((Integer.parseInt(s))); } userService.deleteAll(ids); return "redirect:findAll.do"; }

    serviceImpl层

    @Override public void deleteAll(List<Integer> ids) { userDao.deleteAll(ids); }

    DAO层

    void deleteAll(@Param("ids")List<Integer> ids);

    usermapper.xml

    <delete id="deleteAll" parameterType="list" > delete from tb_user where id in <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </delete>
    Processed: 0.011, SQL: 10