设为首页 加入收藏

TOP

SSM框架手动实现分页逻辑(非PageHelper)(二)
2019-10-09 19:59:53 】 浏览:32
Tags:SSM 框架 手动 实现 逻辑 PageHelper
= "1") Integer pageNo, @RequestParam(required = false,defaultValue = "5") Integer pageSize) { /** * pageSize 是每页显示的条数 * pageNo 是页码,sql分页传递的第一个参数是开始的索引; * 计算公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数 */ //数据总数 int count = customerService.count(); //计算最大页码 int maxPage =(int) Math.ceil(count/pageSize.doubleva lue()); //当前页码超出最大页码返回最大页码值: pageNo = pageNo>maxPage?maxPage:pageNo; //分页开始的索引值 int index = (pageNo - 1) * pageSize > count ? count : (pageNo - 1) * pageSize; return customerService.findAllPageSql(index, pageSize); } }

2.分层调用方法

CustomerServiceImpl.java

@Service
public class CustomerServiceImpl implements CustomerService {
    @Autowired
    CustomerDao customerDao;
    @Override
    public String findAllPageSql(Integer index, Integer pageSize) {
        return JsonUtil.toJSON(customerDao.findAllPageSql(index, pageSize));
    }
}

CustomerDao.java

public interface CustomerDao {   
    List<Customer> findAllPageSql(Integer index,Integer pageSize);
}

3.定制sql

CustomerMapper.xml

<?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.vue.dao.CustomerDao">
    <select id="findAllPageSql" parameterType="java.lang.Integer" resultType="com.vue.entity.Customer">
        SELECT * FROM t_customer LIMIT #{param1},#{param2}
    </select>
</mapper>

Mapper.xml映射文件获取多个参数参考:

Mybatis中的Mapper.xml映射文件sql查询接收多个参数

Mybatis中的Mapper.xml映射文件sql查询接收多个参数


以上

  • 以上就是SSM框架不用PageHelper插件实现分页的全过程,推荐使用第二种定制SQL查询,因为此种查询方法更加符合分页逻辑的实现,每次只查询需要的数据,而不是每次都要查询所有数据,故效率更高。
  • 有问题可以一起交流:
    • my blog
    • 邮箱:594983498@qq.com
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇maven仓库之第二篇 下一篇死磕 java同步系列之终结篇

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目