实现网页的模糊查询和批量删除
目录
模糊查询
网页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>