Spring/SpringMVC/MyBatis实现分页

1、DAO层接口
List<Teacher> selectAllTeachers(@Param(value="begin")Integer begin,
            @Param(value="end")Integer end);
Integer selectTeachersNumber();
2、Mapper文件配置
<resultMap type="teacher" id="teacherMap">
        <id column="teaId" property="teacherId"/>
        <result column="teaName" property="teacherName"/>
        <association property="academy" javaType="academy"> 
            <id column="academy_id" property="academyId"/>
            <result column="acaName" property="academyName"/>
        </association>
        <collection ofType="course" property="courses">
            <id column="course_id" property="courseId"/>
            <result column="couName" property="courseName"/>
        </collection>
    </resultMap>  
	<select id="selectAllTeachers" resultMap="teacherMap">
	    select tea.teacher_id as teaId,tea.teacher_name as teaName,
        aca.academy_name as acaName,cou.course_name as couName
        from (select t.*,rownum rn from interact_teacher t) 
        tea join interact_academy aca        
        on tea.academy_id=aca.academy_id
        join interact_course cou 
        on cou.teacher_id=tea.teacher_id 
        where rn between #{begin} and #{end} order by tea.teacher_id
	</select>
	<select id="selectTeachersNumber" resultType="Integer">
	    select count(*) from interact_teacher
	</select>

3、Service层接口

List<Teacher> queryAllTeachers(Integer teacherCurPage);
Integer teacherTotalPage();
4、Service接口实现
@Autowired
    private TeacherDao teacherDao;
    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public List<Teacher> queryAllTeachers(Integer teacherCurPage) {
        Integer begin = (teacherCurPage-1)*4+1;  
        Integer end = 4*teacherCurPage;
        List<Teacher> selectAllTeachers = teacherDao.selectAllTeachers(begin,end);
        return selectAllTeachers;
    }
    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public Integer teacherTotalPage() {
        Integer count = teacherDao.selectTeachersNumber();
        Integer totalPage = null;
        if(count%4==0){
            totalPage = count/4;
        }else{
            totalPage = count/4+1;
        }           
        return totalPage;
    }
5、Controller
@Autowired
    private TeacherService tea;
@RequestMapping("/queryAllTeachers")
    public String queryAllTeachers(Integer teacherCurPage,Integer studentId,Model model){
        if(teacherCurPage == null){
           teacherCurPage = 1;
        }
        List<Teacher> queryAllTeachers = tea.queryAllTeachers(teacherCurPage);
        Integer teacherTotalPage = tea.teacherTotalPage();
        model.addAttribute("teachers", queryAllTeachers);
        model.addAttribute("studentId", studentId);
        model.addAttribute("teacherCurPage", teacherCurPage);
        model.addAttribute("teacherTotalPage", teacherTotalPage);
        return "student/queryTeachers";
    }
6、jsp
<div class="row">
	<div class="pagination" style="text-align: center;">
              <ul>
                <li>
                    <a 
                        <c:if test="${teacherCurPage==1}">
                            style="color: grey" href="javascript:void(0)"
                        </c:if>
                        <c:if test="${teacherCurPage>1}">
                            href="${ pageContext.request.contextPath }/student/queryAllTeachers.do?teacherCurPage=${teacherCurPage-1}&studentId=${studentId }" 
                        </c:if>
                    >上一页</a>
                </li>
                <li>
                    <c:forEach var="i" begin="1" end="${teacherTotalPage }">
                       <a 
                          <c:if test="${i==teacherCurPage }">
                             style="color: grey" href="javascript:void(0)"
                          </c:if>
                          <c:if test="${i!=teacherCurPage }">
                             href="${ pageContext.request.contextPath }/student/queryAllTeachers.do?teacherCurPage=${i}&studentId=${studentId }"
                          </c:if>
                       >${i}</a>
                    </c:forEach>
                </li>
                <li>
                    <a 
                        <c:if test="${teacherCurPage==teacherTotalPage}">
                            style="color: grey" href="javascript:void(0)"
                        </c:if>
                        <c:if test="${teacherCurPage<teacherTotalPage}">
                            href="${ pageContext.request.contextPath }/student/queryAllTeachers.do?teacherCurPage=${teacherCurPage+1}&studentId=${studentId }" 
                        </c:if>
                    >下一页</a>
                </li>
             </ul>
        </div>
      </div>

猜你喜欢

转载自blog.csdn.net/weixin_42273990/article/details/80727496