分页与模糊查询

实体类

public class PageBean<T> implements Serializable {
    private int pageNum;//当前页数
    private int pageSize;//每页显示的记录数
    private int totalCount;//总记录数
    private int pageNums;//总页数
    private List<T> list;//每页显示的数据

方法体........

SpeakerMapper接口


    //查询总数 模糊查询
    int getAllSpeaker(HashMap<Object, Object> map);

    //分页
    List<Speaker> queryAllSpeakerList(HashMap<Object, Object> map);

SpeakerMapper.xml sql语句

 <!--分页与模糊查询-->
    <select id="getAllSpeaker" parameterType="java.util.Map" resultType="int">
        select count(*) from speaker
        <where>
            <if test="queryName !=null and queryName !=''">
                speaker_name like '%${queryName}%'
            </if>
            <if test="queryJob !=null and queryJob !=''">
               and  speaker_job like '%${queryJob}%'
            </if>
        </where>
    </select>

    <select id="queryAllSpeakerList" parameterType="java.util.Map" resultType="com.zhiyou100.video.model.Speaker">
        select * from speaker
        <where>
            <if test="queryName !=null and queryName !=''">
                speaker_name like '%${queryName}%'
            </if>
            <if test="queryJob !=null and queryJob !=''">
                and  speaker_job like '%${queryJob}%'
            </if>
        </where>
        limit #{start},#{pageSize}
    </select>
 

SpeakerService业务层接口

 //对主讲人进行分页
    PageBean<Speaker> queryAllSpeakerList(HashMap<Object, Object> map);

SpeakerService业务层实现类

  @Override
    public PageBean<Speaker> queryAllSpeakerList(HashMap<Object, Object> map) {
        /*
        private int pageNum;//当前页数
        private int pageSize;//每页显示的记录数
        private int totalCount;//总记录数
        private int totalPage;//总页数
        private List<T> Lists;//每页显示的数据
         */

        //获取当前页的值
        int pageNum = (int)map.get("pageNum");
        int pageSize = (int)map.get("pageSize");

        //获取总记录数totalCount
        int totalCount = speakerMapper.getAllSpeaker(map);
        //获取总页数 (公式:总记录数 % 每页显示的记录数 == 0 ? 总记录数 / 每页显示的记录数 :(总记录数 /每页显示的记录数)+1
        int pageNums = totalCount % pageSize == 0 ? totalCount / pageSize:(totalCount/pageSize)+1;
          //起始页=(当前页-1)*每页显示的记录数
        int start = (pageNum-1)*pageSize;
        map.put("start",start);
        //获取每页的数据>
        List<Speaker> list = speakerMapper.queryAllSpeakerList(map);

        PageBean<Speaker> pageBean = new PageBean<>(pageNum, pageSize, totalCount, pageNums, list);

        return pageBean;
    }
SpeakerController控制层
  //分页查询所有
    @RequestMapping("/speaker/index.do")
    public String list(String queryName,String queryJob,Integer pageNum,Model model,HttpServletRequest req){

        HashMap<Object, Object> map = new HashMap<>();
        map.put("queryName",queryName);//模糊查询姓名
        map.put("queryJob",queryJob);//模糊查询职位
        //判断首次加载的主页值
        if(pageNum == null||pageNum <= 0){
            pageNum = 1;
        }
        //將pageNum
        map.put("pageNum",pageNum);
        //每页显示的数值,页面上每页显示多少条数据,就跟这有关
        map.put("pageSize",5);
        //将map传入服务层,返回PageBean分也层
        PageBean<Speaker> pageInfo = speakerService.queryAllSpeakerList(map);

        model.addAttribute("queryName",queryName);
        model.addAttribute("queryJob",queryJob);
        model.addAttribute("pageInfo",pageInfo);//对应前端分页上的

        return "/admin/speaker/index";
    }

index.jsp主页

    <%--分页请点击这个路径--%>
		<jsp:include page="../page.jsp"></jsp:include>
	</div>

	<form id="pageForm" action="admin/speaker/index.do" method="post">
		<input type="hidden" name="queryName" value="${queryName }">
		<input type="hidden" name="queryJob" value="${queryJob }">
        
	<%--分页--%>
		<input type="hidden" name="pageNum" value="${pageInfo.pageNum }" id="queryPage">
	</form>

page.jsp分页页面

<!-- 分页显示 -->
<nav aria-label="Page navigation">
  <ul class="pagination">
   <c:if test="${pageInfo.pageNum==1 }">
	    <li class="disabled">
	      <a href="#" aria-label="Previous" onclick="return false;"><span aria-hidden="true">&laquo;</span></a>
	    </li>
    </c:if>
    <c:if test="${pageInfo.pageNum>1 }">
	    <li>
	      <a href="javascript:void(0);" aria-label="Previous" onclick="queryPage(${pageInfo.pageNum-1});"><span aria-hidden="true">&laquo;</span></a>
	    </li>
    </c:if>
    
    <c:forEach begin="1" end="${pageInfo.pageNums }" step="1" var="i">
    	 <c:if test="${pageInfo.pageNum==i }"> 
    		<li class="active"><a href="javascript:void(0);">${i }</a></li>
    	</c:if> 
    	 <c:if test="${pageInfo.pageNum!=i }"> 
    		<li><a href="javascript:void(0);" onclick="queryPage(${i})">${i }</a></li>
    	</c:if> 
    	
    </c:forEach>
      <c:if test="${pageInfo.pageNum==pageInfo.pageNums }">
	    <li class="disabled">
	      <a href="javascript:void(0);" aria-label="Next"><span aria-hidden="true">&raquo;</span></a>
	    </li>
    </c:if>
    <c:if test="${pageInfo.pageNum!=pageInfo.pageNums }">
	    <li>
	      <a href="javascript:void(0);" onclick="queryPage(${pageInfo.pageNum+1})" aria-label="Next"><span aria-hidden="true">&raquo;</span></a>
	    </li>
    </c:if>
  </ul>
</nav>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值