前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中分页查询的实现_java中分页实现步骤图解

java中分页查询的实现_java中分页实现步骤图解

作者头像
全栈程序员站长
发布2022-11-10 15:54:05
1.1K0
发布2022-11-10 15:54:05
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

java分页查询接口的实现

分页要传入当前所在页数和每页显示记录数,再分页查询数据库,部分代码如下所示。

传入参数实体类:

代码语言:javascript
复制
public class MessageReq {
private String memberId;//会员id
private int currentPage;//当前页
private int pageSize;//一页多少条记录
private int startIndex;//从哪一行开始
private int endIndex;//从哪一行结束
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public int getCurrentPage() {
return currentPage;
}   
public int getStartIndex() {
return startIndex;
}
public int getEndIndex() {
return endIndex;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public void setEndIndex(int endIndex) {
this.endIndex = endIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
//根据当前所在页数和每页显示记录数计算出startIndex和endIndex
public void setStartIndexEndIndex(){
this.startIndex=(this.getCurrentPage()-1)*this.getPageSize();
this.endIndex= (this.getCurrentPage()-1)*this.getPageSize()+this.getPageSize();
}
}

分页工具类:

代码语言:javascript
复制
public class Page<T>{
private int currentPage = 1; // 当前页
private int pageSize = 20; //每页显示记录数
private int startRecord = 1; //起始查询记录
private int totalPage = 0; //总页数
private int totalRecord = 0; //总记录数
private List<T> datas;
public Page(){}
public Page(int currentPage, int pageSize) {
this.currentPage = currentPage;
this.pageSize = pageSize;
if(this.currentPage <= 0) {
this.currentPage = 1;
}
if(this.pageSize <=0) {
this.pageSize = 1;
}
}
public Page(int currentPage, int pageSize, int totalRecord) {
this(currentPage, pageSize);
this.totalRecord = totalRecord;
if(this.totalRecord <=0) {
this.totalRecord = 1;
}
}
public int getCurrentPage() {
if(currentPage <= 0) {
return 1;
}
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRecord() {
if(totalRecord < 0) {
return 0;
}
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public List<T> getDatas() {
return datas;
}
public void setDatas(List<T> datas) {
this.datas = datas;
}
public int getTotalPage() {
if(totalRecord <= 0) {
return 0;
}
int size = totalRecord / pageSize;//总条数/每页显示的条数=总页数
int mod = totalRecord % pageSize;//最后一页的条数
if(mod != 0) {
size++;
}
totalPage = size;
return totalPage;
}
public int getStartRecord() {
startRecord = (getCurrentPage() - 1) * pageSize;
return startRecord;
}
}

Manager层

代码语言:javascript
复制
public interface MessageManager {
//分页查询消息
public Page<Message> queryMessage(MessageReq req);
}
代码语言:javascript
复制
@Component
public class MessageManagerImpl implements MessageManager{ 

@Autowired
private MessageMapper messageMapper;
@Override
public Page<Message> queryMessage(MessageReq req) {
Page<Message> page = new Page<Message>();
int pageCount = messageMapper.getMessageNum(req.getMemberId());//得到总条数
page = initPage(page, pageCount, req);
List<Message> message= messageMapper.queryMessage(req);
if (!message.isEmpty()) {
page.setDatas(message);
}
return page;
}
private Page<Message> initPage(Page<Message> page, int pageCount,
MessageReq messageReq) {
page.setTotalRecord(pageCount);
page.setCurrentPage(messageReq.getCurrentPage());
page.setPageSize(messageReq.getPageSize());
messageReq.setStartIndexEndIndex();
return page;    
}   
}

Dao层

代码语言:javascript
复制
public interface MessageMapper {
//分页查询
public List<Message> queryMessage(Messagereq);
//查询总条数
public int getMessageNum(String memberId);
}

mybatis的.xml文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sf.ccsp.member.dao.mapper.MessageMapper">
<resultMap id="MessageResultMap" type="com.sf.ccsp.member.dao.domain.message.Message" >
<result column="ID" property="id" jdbcType="VARCHAR" />
<result column="MEMBERID" property="memberId" jdbcType="VARCHAR" />
<result column="MESSAGE_CLASSIFY" property="messageClassify" jdbcType="VARCHAR" />
<result column="MESSAGE_CODE" property="messageCode" jdbcType="VARCHAR" />
<result column="MESSAGE_CONTENT" property="messageContent" jdbcType="VARCHAR" />
<result column="MESSAGE_STATUS" property="messageStatus" jdbcType="VARCHAR" />
</resultMap>
<select id="queryMessage" resultMap="MessageResultMap" parameterType="com.sf.ccsp.member.client.request.MessageReq">
select *
from cx_customer_message
where MEMBERID = #{memberId, jdbcType=VARCHAR}
and ISVALID = '1'
LIMIT #{startIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER}  
</select>
<select id="getMessageNum" resultType="INTEGER" parameterType="String">
select count(*)
from cx_customer_message
where MEMBERID = #{memberId, jdbcType=VARCHAR}
</select>
</mapper>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186935.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月1日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java分页查询接口的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档