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