SSM学习[02]:【PageHelper分页插件的使用】

732 阅读2分钟

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>