使用Mybatis实现分页效果示例

网友投稿 614 2022-11-17

使用Mybatis实现分页效果示例

使用Mybatis实现分页效果示例

一、创建分页的工具类PageUti,存储分页所需要的五个数据:pageIndex(当前页码),pageSize(每页记录条数),count(总记录数),pageNum(总页数),list(每一页的内容)。

/**

* @param 泛型类

*/

public class PageUtil {

//当前页码

private int pageIndex;

//每页记录数

private int pageSize;

//总记录数

private int count;

//总页数

private int pageNum;

//每一页的内容

private List list;

}

二、xml文件:mysql对分页的支持是通过limit子句。

如:

# 每页10条记录,取第一页,返回的是前10条记录

select * frombooks limit (1-1)*10,10;

# 每页10条记录,取第二页,返回的是第11条记录,到第20条记录,

select * frombooks limit (2-1)*10,10;

所以:limit的第一个参数=(当前页码-1)*每页记录数

select * from books limit #{pageIndex},#{pageSize}

select count(*) from books

三、BooksServiceImpl.java:将limit需要的两个参数存入map集合中,再将分页所需要的五个数据封装。

public PageUtil getBooksPage(int pageIndex, int pageSize) {

PageUtil pageUtil=new PageUtil<>();

SqlSession sqlSession= MybatisUtil.getSqlSession();

try {

//booksMapper是使用动态代理模式,运行反射机制,创建的一个代理对象

BooksMapper booksMapper=sqlSession.getMapper(BooksMapper.class);

Map map=new HashMap();

int row=booksMapper.getCount(map);

//计算总页数

int pageCount= (int) Math.ceiLgzxIfTDhl((double) row / pageSize);

//limit的第一个参数=(当前页码-1)*每页记录数

map.put("pageIndex",(pageIndex - 1) * pageSize);

map.put("phttp://ageSize", pageSize);

List list=booksMapper.getBooksPage(map);

//将数据封装

pageUtil.setPageIndex(pageIndex);

pageUtil.setPageSize(pageSize);

pageUtil.setCount(row);

pageUtil.setPageNum(pageCount);

pageUtil.setList(list);

}catch (Exception e){

e.printStackTrace();

}finally {

sqlSession.close();

}

return pageUtil;

}

四、servlet:

protected void getBooks(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if(request.getParameter("pageIndex")!=null) {

int pageIndex=Integer.parseInt(request.getParameter("pageIndex"));

show(response,pageIndex,search);

}else {

show(response);

}

}

private void show(HttpServletResponse response,Object ...ages) throws IOException {

int pageIndex = 1;//默认第一页

if(ages.length>0){

pageIndex=(int)ages[0];

}

PageUtil pageUtil=new PageUtil();

//每页10条数据

pageUtil=new BooksServiceImpl().getBooksPage(pageIndex,10);

String js= JSON.toJSONString(pageUtil);

PrintWriter pw=response.getWriter();

pw.write(js);

}

五、前段页面

显示分页:

var page = "

page += "

if (data.pageIndex == 1) {

page += "

} else {

page += "

}

// for (var i = 1; i <= data.pageNum; i++) {

// page += "" + i + ""

// }

if (data.pageIndex < data.pageNum) {

page += "

} else {

page += "

}

page += "

点击分页(myPage):通过ajax请求将页码传到servlet

function myPage(index) {

console.log(index)

$.getJSON("books/getBooks.do", {"pageIndex": index}, function (data) {

showBooks(data)

});

}

六、MybatisUtil.java工具类:向外提供一个方法,可以获取SqlSession对象

public class MybatisUtil {

static SqlSessionFactory sqlSessionFactory;

// 加载主配置文件,并创建 sqlSessionFactory

static {

String resource = "com/xmx/config/mybatis-config.xml";

InputStream inputStream = null;

try {

inputStream = Resources.getResourceAsStream(resource);

} catch (IOException e) {

e.printStackTrace();

}

sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

}

/**

* @Description: 向外提供一个方法,可以获取SqlSession对象

* @Return: org.apache.ibatis.session.SqlSession

*/

public static SqlSession getSqlSession() {

// return sqlSessionFactory.openSession(true);

return sqlSessionFactory.openSession();

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Flutter 学习 Basics Widget
下一篇:Docker基础概念及操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~