当前位置:   article > 正文

mysql分页从页面到sql从头到尾详解_mysql中分页是从1haishi

mysql中分页是从1haishi

1.ResponseVo 定义分页属性

  1. public class ResponseVo {
  2. private String resultNote;
  3. private Integer result;
  4. private Integer statu;
  5. private Integer totalCount;
  6. private Integer pageIndex;
  7. private Integer pageSize;
  8. private Integer currPageCount;
  9. private Object detail;
  10. private List<Object> detailList;
  11. }

2.PageHelp 定义同样相关属性

  1. public class PageHelp {
  2. private Integer pageIndex;//当前第几页 下标从0开始
  3. private Integer pageSize;//每页展示多少条数据
  4. private Integer totalCount;//数据总数
  5. private Integer currPageCount;//当前页数据个数
  6. private Integer totalIndex;//总页数
  7. }
 
  1. /**
  2. * 判断json传过来的数据有无分页需求,格式化,默认值等设置
  3. * @param jsonString
  4. * @return
  5. */
  6. public PageHelp isHasPageHelp(String jsonString){
  7. this.pageIndex = 0;
  8. this.pageSize = 10;
  9. JSONObject json = JSONObject.parseObject(jsonString);
  10. if(json.getString("pageSize") !=null){
  11. if(json.getString("pageSize").trim().matches("^[0-9]*$")){
  12. this.pageSize = Integer.parseInt(json.getString("pageSize").trim());
  13. }
  14. if(this.pageSize>50){//分页如果一页显示大于50条数据,则只能以50条每页分页
  15. this.pageSize = 50;
  16. }
  17. }
  18. if(json.getString("pageIndex") !=null){
  19. if(json.getString("pageIndex").trim().matches("^[0-9]*$")){
  20. this.pageIndex = Integer.parseInt(json.getString("pageIndex").trim());
  21. }
  22. }
  23. return selectPageCriteria(this.pageIndex, this.pageSize);
  24. }


  1. /**
  2. * @param pageNum
  3. * @param pageSize
  4. * @return
  5. */
  6. public PageHelp selectPageCriteria(Integer pageIndex,Integer pageSize){
  7. PageHelp pageHelp = new PageHelp();
  8. if(pageIndex!=0){
  9. pageIndex = (pageIndex)*pageSize;
  10. }else{
  11. pageIndex = 0;
  12. }
  13. pageHelp.setPageIndex(pageIndex);
  14. pageHelp.setPageSize(pageSize);
  15. return pageHelp;
  16. }

上面两个方法对

pageIndex 和PageSize进行验证,然后map.put("pageHelp", pageHelp.isHasPageHelp(param));

List<UserLog> userLogsLis = userLogService.listUserLog(map);

int total = userLogService.totalUserLog(map);

  1. <select id="listUserLog" parameterType="map" resultMap="BaseResultMap">
  2. select
  3. <include refid="Base_Column_List" />
  4. from cp_user_log
  5. <where>
  6. <if test="loginName != null">
  7. and login_name = #{loginName,jdbcType=VARCHAR}
  8. </if>
  9. <if test="level != null">
  10. and level = #{level,jdbcType=VARCHAR}
  11. </if>
  12. <if test="keyWord != null">
  13. and key_word = #{keyWord,jdbcType=VARCHAR}
  14. </if>
  15. <if test="otherParamVo.addTimeBegin != null">
  16. <![CDATA[ and create_time >=#{otherParamVo.addTimeBegin,jdbcType=TIMESTAMP}]]>
  17. </if>
  18. <if test="otherParamVo.addTimeEnd != null">
  19. <![CDATA[ and create_time <= #{otherParamVo.addTimeEnd,jdbcType=TIMESTAMP}]]>
  20. </if>
  21. <if test="loginNameType != null">
  22. and login_name_type = #{loginNameType,jdbcType=INTEGER}
  23. </if>
  24. </where>
  25. <if test="pageHelp.pageIndex != null and pageHelp.pageSize != null">
  26. limit #{pageHelp.pageIndex},#{pageHelp.pageSize}
  27. </if>
  28. </select>

以上是从java到sql的分页内容

--------------------------------------------------

接下来看从java到前段:

  1. resVo.setPageIndex(pageHelp.getPageIndex());
  2. resVo.setPageSize(pageHelp.getPageSize());
  3. pageHelp.setCurrPageCount(userLogsLis.size());
  4. resVo.setCurrPageCount(userLogsLis.size());
  5. resVo.setDetail(userLogsLis);
  6. resVo.setTotalCount(total);
  7. return JSONObject.toJSONString(resVo, SerializerFeature.WriteMapNullValue,
  8. SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty,
  9. SerializerFeature.WriteDateUseDateFormat);

返回了Json  resVo到前台;

JS:定义参数:

  1. var vmm=new Vue({
  2. el:'#searchbox',
  3. data:{
  4. //用户类型(0为普通用户、1为管理员)
  5. loginNameType_datas: [{num:'-1',value:'全部'},{num:'0',value:'普通用户'},{num:'1',value:'管理员'}],
  6. loginNameType_selected:'-1',
  7. //日志级别
  8. level_datas: [{num:'-1',value:'全部'},{num:'0',value:'正常'},{num:'1',value:'异常'}],
  9. level_selected:'-1',
  10. //日志内容
  11. keyWordName_datas:[{name:'全部'}],
  12. keyWordName_selected:"全部",
  13. loginName:"",
  14. orderId:"",
  15. userLogList:[],
  16. pageNum:1,
  17. pageIndex:1,
  18. pageChoice:1,
  19. orderId:"",
  20. userId:"",
  21. dateTime:'',
  22. currentPage:1,
  23. totalPage:0,
  24. pageSize:10,
  25. },


  1. submit: function(pageIndex,searchId){
  2. this.userLogList=[];
  3. var data= {};//此为提交到后台data
  4. //var id = this.orderId;
  5. var loginNameType = this.loginNameType_selected;
  6. var loginName = this.loginName;
  7. var level = this.level_selected;
  8. var keyWord = this.keyWordName_selected;
  9. if(loginNameType != -1){
  10. data.loginNameType = loginNameType;
  11. }
  12. if(loginName != ""){
  13. data.loginName = loginName;
  14. }
  15. if(this.dateTime != ''){
  16. data.createTimeBegin = this.dateTime[0];
  17. data.createTimeEnd = this.dateTime[1];
  18. }
  19. if(level != -1){
  20. data.level = level;
  21. }
  22. if(keyWord != "全部"){
  23. data.keyWord = keyWord;
  24. }
  25. data.pageIndex = pageIndex-1;
  26. data.pageSize = this.pageSize;
  27. this.pageIndex = pageIndex;
  28. this.$http.post(
  29. '/cpmgr/listUserLog',
  30. data
  31. ).then(function(data){//此为后台传来的data
  32. var json = data.body;
  33. var userLogList = data.body.detail;
  34. var obj={};
  35. for(var i =0;i<userLogList.length;i++){
  36. obj = userLogList[i];
  37. if(obj.loginNameType==0){
  38. obj.loginNameType="用户";
  39. }
  40. if(obj.loginNameType==1){
  41. obj.loginNameType="管理员";
  42. }
  43. if(obj.level==0){
  44. obj.level="正常";
  45. }
  46. if(obj.level==1){
  47. obj.level="异常";
  48. }
  49. vmm.userLogList.push(obj);
  50. }
  51. var pageNum = Math.ceil(json.totalCount/json.pageSize);
  52. vmm.pageNum = pageNum;
  53. this.totalPage = json.totalCount;
  54. console.log(userLogList);
  55. });
  56. },


jsp:

  1. <!--page start-->
  2. <ul class="page">
  3. <el-pagination background
  4. @size-change="handleSizeChange"
  5. @current-change="handleCurrentChange"
  6. :current-page="currentPage"
  7. :page-sizes="[10, 20, 50, 100]"
  8. :page-size="10"
  9. layout="total, sizes, prev, pager, next, jumper"
  10. :total="totalPage">
  11. </el-pagination>
  12. </ul>
  13. <!--page end-->





声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号