mysql怎么查看总页数 mysql查询分页和总数语句

mybatis+mysql怎么分页查询

package cn.tsjinrong.fastfile.util;

创新互联于2013年成立,先为果洛州等服务建站,果洛州等地企业,进行企业商务咨询服务。为果洛州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

/**

* @ClassName: Page

* @Description: TODO(分页组件的父类,用来封装分页的 通用内容和逻辑)

* @author zhanghaiyang

* @date 2016年1月14日 下午12:37:55

* @Copyright © 2016上海通善互联网金融信息服务有限公司

*/

public class Page {

// 用户输入的分页条件

private int currentPage = 1; // 当前页

private int pageSize = 15; // 每页最大行数

// 用于实现分页SQL的条件,是根据用户输入条件计算而来的

private int begin;

private int end;

// 自动计算出的总行数

private int rows;

// 根据总行数计算总页数,然后将总页数输出给页面

private int totalPage;

public int getRows() {

return rows;

}

public void setRows(int rows) {

this.rows = rows;

}

public int getTotalPage() {

// 根据总行数,计算总页数

if (rows % pageSize == 0) {

totalPage = rows / pageSize;

} else {

totalPage = rows / pageSize + 1;

}

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public int getBegin() {

// 在mapper.xml使用begin属性时,对其进行计算

begin = (currentPage - 1) * pageSize;

return begin;

}

public void setBegin(int begin) {

this.begin = begin;

}

public int getEnd() {

// 在mapper.xml使用end属性时,对其进行计算

end = currentPage * pageSize + 1;

return end;

}

public void setEnd(int end) {

this.end = end;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

}

public ModelAndView findVideosByPage(HttpServletRequest request, HttpServletResponse response, FileProperties fp) {

ModelAndView model = new ModelAndView("/video/video_list");

MapString, Object params = new HashMapString, Object(3);

if (StringUtils.isNotBlank(fp.getBusiId())) {

params.put("busiId", fp.getBusiId());

}

if (StringUtils.isNotBlank(fp.getApplyName())) {

params.put("applyName", fp.getApplyName());

}

if (fp.getApplyDateStart() != null StringUtils.isNotBlank(fp.getApplyDateStart())) {

params.put("applyDateStart", DateUtil.parseDate(fp.getApplyDateStart()));

} else {

params.put("applyDateStart", DateUtil.addDay(new Date(), -7));

}

if (fp.getApplyDateEnd() != null StringUtils.isNotBlank(fp.getApplyDateEnd())) {

params.put("applyDateEnd", DateUtil.parseDate(fp.getApplyDateEnd()));

} else {

params.put("applyDateEnd", DateUtil.format(new Date()));

}

fp.setRows(fastfileVideoService.selectRows(params));

model.addObject("fastfileVideoInfoPage", fp);

ListFastfileVideoInfo fastfileVideoInfos = fastfileVideoService.selectByPage(fp);

model.addObject("fastfileVideoInfos", fastfileVideoInfos);

model.addObject("applyDateStart", DateUtil.format(DateUtil.addDay(new Date(), -7)));

model.addObject("applyDateEnd", DateUtil.format(new Date()));

return model;

}

select id="selectByPage" resultMap="BaseResultMap" parameterType="cn.tsjinrong.fastfile.util.FileProperties"

select

include refid="Base_Column_List" /

from fastfile_video_info where 1=1

if test="busiId != null and busiId !=''"

and busi_id = #{busiId,jdbcType=VARCHAR}

/if

if test="applyName != null and applyName !=''"

and apply_name=#{applyName,jdbcType=VARCHAR}

/if

if test="applyDateStart != null and applyDateStart !=''"

and apply_date = #{applyDateStart,jdbcType=DATE}

/if

if test="applyDateEnd != null and applyDateEnd !=''"

and apply_date = #{applyDateEnd,jdbcType=DATE}

/if

and del_flag = 0

order by apply_date desc limit #{beginRow},#{pageSize}

/select

MYSQL中的FOUND_ROWS()应该怎么使用?可以用在分页中计算总页数么?

1 select SQL_CALC_FOUND_ROWS * from table

where a='a' limit 0,20;先拿出想要的数据。

2 select found_rows() as num;再计算上个结果集个数。

我用的是mysql数据库,用limit函数实现的分页,但是想获得总页数有多少返回到前端

的确要查询两次的,因为计算总记录数是使用的聚合函数count(),如果你想一起查询出来,就要使用分组,那样也麻烦,对数据库的操作要使用细粒度的操作,可以使用事务来控制两次查询,用同一个connection,这样可以避免两次查询导致两次不同进程之间的连接操作


网站栏目:mysql怎么查看总页数 mysql查询分页和总数语句
网页路径:http://hbruida.cn/article/doeddij.html