1.dao层接口
//批量删除
int deleteisd(Integer[] ids);
2.dao层实现类
@Override
public int deleteisd(Integer[] ids) {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
String hqldelete="delete from Emp e where e.empno in (:ids)";
Query query = session.createQuery(hqldelete);
query.setParameterList("ids",ids);
int i = query.executeUpdate();
session.beginTransaction().commit();
return i;
}
3.service层实现dao层方法
4.controller层action类
定义jsp传过来参数
private Integer empno[];
public Integer[] getEmpno() {
return empno;
}
public void setEmpno(Integer[] empno) {
this.empno = empno;
}
public String deletes(){
System.out.println("=============批量删除=============");
for(Integer ep:empno)
System.out.println(ep);
int deleteisd = empService.deleteisd(empno);
System.out.println("deleteisd===========:"+deleteisd);
return "index";
}
5.动态分页
5.1jsp页面动态分页
<script type="text/javascript">
function doPage(pageno) {
//.给表单的当前也那么赋值
$("#pageno").val(pageno);
//提交查询的表单
$("#query").submit();
}
function changecheckBox(check) {
$("input[name='empno']").attr("checked", check);
}
function deleteAll() {
$("#delete").submit();
}
</script>
<body>
<form action="emp_query" method="post" id="query">
员工部门分类<select name="page.deptnoid">
<option value="0">全部</option>
<c:forEach items="${depts}" var="type">
<option value="${type.deptno}"
<c:if test="${type.deptno==deptnoid}">selected="selected"</c:if>>${type.deptname}</option>
</c:forEach>
</select> 员工名称<input name="page.empname" value="${empname}">
</select>
<input type="hidden" name="page.now" id="pageno" value="1">
<input type="submit" value="查询">
</form>
<tr>
<td colspan="9" style="text-align: center"><a href="javascript:doPage(1);">首页</a>
<a href="javascript:doPage(${pageBean.pageNo-1});">上一页</a>
<a href="javascript:doPage(${pageBean.pageNo+1});">下一页</a>
<a href="javascript:doPage(${pageBean.pageTotal});">末页</a>
${pageBean.pageNo}/${pageBean.pageTotal}页</td>
</tr>
6.dao层接口写分页方法
//按条件查询所查询到的行数
int selectBynameordept(String name,Integer dept);
//分页
List<Emp> selectBynames(String name,Integer dept,int first,int last);
7.dao层实现类重写方法
@Override
public int selectBynameordept(String name, Integer dept) {
StringBuilder sb=new StringBuilder();
sb.append("SELECT count(*) FROM Emp e where 1=1");
if(dept!=0&&dept!=null){
sb.append("and e.deptno="+dept+" ");
}
if (!"".equals(name)&&name!=null){
sb.append("and e.empname like '%"+name+"%'");
}
Query query=sessionFactory.getCurrentSession().createQuery(sb.toString());
Long num = (Long)query.uniqueResult();
System.out.println(num);
return num.intValue();
}
@Override
public List<Emp> selectBynames(String name, Integer dept,int first,int last) {
StringBuilder sb=new StringBuilder();
sb.append("FROM Emp e where 1=1");
if(dept!=0&&dept!=null){
sb.append("and e.deptno="+dept+" ");
}
if (!"".equals(name)&&name!=null){
sb.append("and e.empname like '%"+name+"%'");
}
Query query=sessionFactory.getCurrentSession().createQuery(sb.toString());
//设置启始页
query.setFirstResult(first);
//设置每页的行数
query.setMaxResults(last);
List<Emp> list= query.list();
return list;
}
7.service层实现dao层方法
8.action方法类中写分页查询
public String query(){
List<Dept> depts = empService.selectDept();
System.out.println("=========page========="+page);
int i = empService.selectBynameordept(page.getEmpname(), page.getDeptnoid());
System.out.println("有"+i+"条数据================");
PageBean<Emp> pageBean=new PageBean<>();
pageBean.setPageByCount(4);//每页显示的行数
pageBean.setTotal(i);//总行数
pageBean.setPageNo(page.getNow());//设置当前页数
Integer frist=(pageBean.getPageNo()-1)*pageBean.getPageByCount();
List<Emp> list = empService.selectBynames(page.getEmpname(),page.getDeptnoid(),frist,pageBean.getPageByCount());
session.put("emps",list);
session.put("depts", depts);
session.put("pageBean", pageBean);
return "query";
}