一.实现数据表的分页,这里用Mybatis分页插件-PageHepler实现
分页插件pagehelper.jar:
https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql解析工具,你还需要下载jsqlparser.jar
4.1.0及以后版本需要0.9.4版本
http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.4/
4.1.0以前版本需要0.9.1版本
http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/
二.在spring配置文件applicationContext.xml中配置PageHelper插件
<!--3 mybatis 会话工厂bean sqlSessionFactoryBean -->
<bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 实体类别名 -->
<property name="typeAliasesPackage" value="com.hlx.entity" />
<!-- mapper sql映射文件路径 -->
<property name="mapperLocations" value="classpath*:com/hlx/mapper/*Mapper.xml" />
<!-- 配置mybatis-pageHelper插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>dialect=mysql</value>
</property>
</bean>
</array>
</property>
</bean>
三.Dao接口
List<Student> findCondition(Student student);// 根据条件查询数据
四.配置文件StudentMapper.xml
<!-- 根据条件查询数据 -->
<select id="findCondition" resultType="Student" parameterType="Student">
select * from students
<trim prefix="where" prefixOverrides="AND|OR">
<if test="user!=null">
user like concat('%',#{user},'%')
</if>
<if test="email!=null">
and email like concat('%',#{email},'%')
</if>
</trim>
</select>
五.Service接口
PageInfo<Student> findPageList2(int pageIndex,int pageSize,Student student);// 查询所有的数据
六.实现Service接口类
@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public PageInfo<Student> findPageList2(int pageIndex, int pageSize,
Student student) {
// 分页
PageHelper.startPage(pageIndex, pageSize);
// 判断student不能为空
if (student != null) {
// 调用业务方法
List<Student> list = studentDao.findCondition(student);
// 返回分页对象
PageInfo<Student> pageInfo2 = new PageInfo<Student>(list);
return pageInfo2;
}
return null;
}
七.Controller控制层
/**
* 根据条件分页数据
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String getAllPage2(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//当前页
int pageIndex=(request.getParameter("pageIndex")==null)?(1):(Integer.parseInt(request.getParameter("pageIndex")));
//设置每页个数 默认是10条数据
int pageSize=5;
//请求参数值/
String user=request.getParameter("user");
String email=request.getParameter("email");
//封装对象
Student student=new Student(user,email);
//
// 调用业务方法
PageInfo<Student> list = biz.findPageList2(pageIndex, pageSize,student);
// 保存数据
request.setAttribute("lists", list);
request.setAttribute("stu", student);
// 跳转路径
return "list2.jsp";
}
八.JSP页面
<form action="getAllPage2.action" method="post">
<fieldset>
<legend>根据条件查询数据</legend>
<div>
user:<input type="text" name="user" value="${stu.user }"/>
email:<input type="text" name="email" value="${stu.email }"/>
<input type="submit" value="查询"/>
</div>
</fieldset>
<!-- <form action="del2.action" method="post"> -->
<div class="main">
<table width="100%" border="1">
<caption>
<h1>学生信息</h1>
</caption>
<tr align="center">
<td width="24"><input type="checkbox" name="checkbox"
id="checkbox" /> <label for="checkbox"></label></td>
<td width="26">id</td>
<td width="90">user</td>
<td width="157">email</td>
<td width="222">date</td>
<td width="35">age</td>
<td width="112">操作</td>
</tr>
<c:if test="${lists.list.size()!=0}">
<c:forEach var="stu" items="${lists.list}">
<tr align="center">
<td><input type="checkbox" name="checkbox2" id="checkbox2"
value="${stu.id }" /> <label for="checkbox2"></label></td>
<td>${stu.id }</td>
<td>${stu.user }</td>
<td>${stu.email }</td>
<td><fmt:formatDate value="${stu.date }" type="date" />
</td>
<td>${stu.age }</td>
<td><a href="javascript:fun(${stu.id })">删除</a>/<a
href="find.action?id=${stu.id }">修改</a></td>
</tr>
</c:forEach>
</table>
<p>
第${lists.pageNum }/${lists.lastPage }页
<c:if test="${!lists.isFirstPage}">
<a href="javascript:funPage(${lists.firstPage })">首页</a>
<a href="javascript:funPage(${lists.prePage })">上一页</a>
</c:if>
<!--显示所有的页数 -->
<c:forEach items="${lists.navigatepageNums }" var="i">
<a href="getAllPage2.action?pageIndex=${i}">${i}</a>
</c:forEach>
<c:if test="${!lists.isLastPage}">
<a href="javascript:funPage(${lists.nextPage })">下一页</a>
<a href="javascript:funPage(${lists.lastPage })">尾页</a>
</c:if>
</p>
</c:if>
<c:if test="${lists.list.size()==0}">
<tr align="center" style="color:red;"><td colspan="7">没有您要查找的数据</td></tr>
</c:if>
<p style="color:red;">${msg}</p>
<p>
<a href="studentAdd.jsp">添加</a> <input type="submit"
value="选择删除多条数据">
</p>
</div>
<!-- </form> -->
</form>
九 JS
function fun(id){
if(window.confirm("您确定要删除吗?")){
document.location.href="del.action?id="+id;
}
}
/**
* 分页跳转
* @param index
*/
function funPage(index){
document.forms[0].action="getAllPage2.action?pageIndex="+index; //指定路径
document.forms[0].submit(); //提交
}
十.效果