1.导入依赖包:
jsqlparser-0.9.5.jar
pagehelper-5.0.2.jar
2.在Mybatis配置文件中设置分页的方言(也可以配置到Spring配置文件中)
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
3.dao层:查询所有数据的接口
映射文件ClassesMapper.xml:
<resultMap id="BaseResultMap" type="com.ssm01.bean.Classes" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="type" property="type" jdbcType="VARCHAR" />
<result column="status" property="status" jdbcType="INTEGER" />
<result column="majid" property="majid" jdbcType="INTEGER" />
<result column="pre1" property="pre1" jdbcType="INTEGER" />
<result column="pre2" property="pre2" jdbcType="VARCHAR" />
</resultMap>
<resultMap id="rsCla" type="com.ssm01.bean.Classes" extends="BaseResultMap">
<association property="major" column="major">
<result property="name" column="name"/>
</association>
</resultMap>
dao层接口:ClassesMapper
List<Classes> getClaList();
4.Service 层:
4.1.创建ClassesService接口:
public interface ClassesService {
public PageInfo<Classes> getClaList(int PageNO);
}
4.2.创建ClassesService接口实现类,设置分页参数
分页原理:通过PageInfo对第二部中SQL语句拼接分页的关键字以及分页参数,返回PageInfo(包含页码,每页条数,总条数,当前页集合等等)
@Service
public class ClassesServiceImpl implements ClassesService {
@Autowired
ClassesMapper cp;
@Override
public PageInfo<Classes> getClaList(int PageNO) {//PageNO选择第几页
PageHelper.startPage(PageNO,4);//第二个参数代表每页显示条目.
List<Classes> claList = cp.getClaList();//查询全部数据
PageInfo<Classes> info = new PageInfo<>(claList);
//执行第二行代码时拼接LIMIT,info中包含了claList
return info;
}
}
5.控制层(Controller层)
5.1.创建类:ClaController.java
@Controller
@RequestMapping("cla")
public class ClaController {
@Autowired
ClassesService cs;
@RequestMapping
public String getClaList(Model m,@RequestParam(defaultValue = "1") int PageNO){//PageNO,第几页。
//设置分页参数
PageInfo<Classes> info = cs.getClaList(PageNO);
m.addAttribute("info",info);//info存入域对象中
return "class/cla-list";
}
}
5.2.cla-list.jsp页面:
取值:
<c:forEach items="${requestScope.info.list}" var="c">
<tr>
<td><input type="checkbox" name="id" value="${c.id}"></td>
<td class="text-l">${c.id}</td>
<td class="text-l">${c.name}</td>
<td class="text-l">${c.type}</td>
<td class="text-l">${c.major.name}</td>
</tr>
</c:forEach>
前台分页组件:
注:前台分页使用的是H-ui框架分页组件写的,需要引入jquery.js和jquery.pagination.js脚本文件
<div id="pager" style="width:20%;float:right">
</div>
<script type="text/javascript" src="${pageContext.request.contextPath}/static/page/jquery-1.10.2.min.js" ></script>
<script type="text/javascript" src="${pageContext.request.contextPath}static/page/jquery.pagination.js" ></script>
<script type="text/javascript">
//初始化分页组件
var count=${requestScope.info.total};//总条目数
var size=${requestScope.info.pageSize};//每页显示数量
var pageNO=${requestScope.info.pageNum};//选择第几页
$("#pager").pagination(count, {
items_per_page:size,
current_page:pageNO-1,
next_text:"下一页",
prev_text:"上一页",
num_edge_entries:2,
load_first_page:false,
callback:handlePaginationClick
});
//回调方法:点击上一页和下一页
function handlePaginationClick(new_page_index, pagination_container){
location.href="<c:url value="/cla"/>?PageNO="+(new_page_index+1);
}
</script>