SSM分页查询

12 篇文章 0 订阅

先在前端页面设置一个每页数据量pagesize

    var pagesize=5;

加载分页,目的是把页码展示出来,这里搜索的是全部的数据量,通过Math.ceil(data/pagesize)    总数据量/每页数据量 并向上取整  可得到总页数count

把页数当作循环次数,依次把页码打印到前端,当点击页码的时候,将页码数传到展示数据的方法中

function loadpage(){
        $.ajax({
            url:"http://localhost:8080/train0229syh/student/loadpage",
            data:{},
            method:"get",
            success:function (data){
                console.log(data);
                var count=Math.ceil(data/pagesize);
                $(".pagenation").empty();
                for (var i=0;i<count;i++){
                        $(".pagenation").append("<input type='button' class='item' value='"+(i+1)+"' onclick='switchpage("+(i+1)+")'>")
                    }
            },
        })
    }
function switchpage(page){
        get(page);
    }

 将页码和每页的数据量传到后端

function get(page) {
        // ajax ---》 利用ajax进行数据提交  // ++ http协议
        $.ajax({
            url: "http://localhost:8080/train0229syh/student/findAll",   // 地址
            data: {"pagesize":pagesize,"page":page},
            method: "get",
            success: function (data) {
                console.log(data);
                $("#table1").empty();
                view(data);
            }
        })
    }

获取总数据量

    <select id="loadpage" resultType="java.lang.Integer">
        select count(*) from student
    </select>

分页查询  入参类型是Page实体类  

其中因为sql无法直接识别数学计算

<select id="findAll" resultType="com.javen.model.Student" parameterType="com.javen.model.Page">
        select * from student limit ${(page-1) * (pagesize)},#{pagesize}
    </select>

原sql 

select * from student limit (page-1)*(pagesize),pagesize

Page实体类

public class Page {
    public int pagesize;
    public int page;
//getset方法省略
}

 Dao层

public interface StudentDao {

    List<Student> findAll(Page page);
 
    int loadpage();
}

Service层 

@Service
public class IStudentServiceImpl implements IStudentService {
    @Autowired
    private StudentDao studentDao;

   
    public List<Student> findAll(Page page) {
        return studentDao.findAll(page);
    }

    public int loadpage(){
        return studentDao.loadpage();
    }
}

Controller层

@Controller
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private IStudentService iStudentService;


    @ResponseBody
    @RequestMapping("/findAll")
    public List<Student> findAll(Page page){
        return iStudentService.findAll(page);
    }


    @ResponseBody
    @RequestMapping("/loadpage")
    public int loadpage(){
        return iStudentService.loadpage();
    }

}

 

总体逻辑是:获取总数据量,通过总数据量/每页数据获取总页数,将总页数当作循环次数依次打印出来,当点击页码的时候,将页码数当作参数传给分页展示方法,分页展示方法把总页数和单页数据量传到后台,后台通过limit查询分页

select * from student limit (page-1)*(pagesize),pagesize

(page-1)*pagesize 是limit开始的数据位置,pagesize是从开始数据位置要查的数据数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值