springboot 分页查询参数_springBoot查询数据分页显示

图片展示

springBoot所有依赖和配置文件都写好的情况下

1、dao接口的实现方法package com.cy.pj.sys.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Param;

import com.cy.pj.sys.pojo.SysLog;

@Mapper

public interface SysLogDao {

/**

*

* @param username 查询条件(例如查询那个用户的日志信息)

* @return 总记录数(基于这个结果可以计算总页数)

*/

int getRowCount(@Param("username") String username);

/**

*

* @param username 查询条件(例如查询那个用户的日志信息)

* @param startIndex 当前页的起始位置

* @param paInteger 当前页的页面大小

* @return 当前页的日志记录信息

* 数据库中每条日志信息封装到一个SysLog对象中

*/

List findPageObjects(

@Param("username")String username,

@Param("startIndex")Integer startIndex,

@Param("pageSize")Integer pageSize

);

}

2、写实现dao中Mapper的sql语句<?xml version="1.0" encoding="UTF-8"?>

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

from sys_Logs

username like concat('%',#{username},'%')

select count(*)

select *

order by createdTime desc

limit #{startIndex},#{pageSize}

3、写pojo类对数据进行封装,所显示的表字段的pojo类

3.1这里是SysLogpackage com.cy.pj.sys.pojo;

import java.io.Serializable;

import java.util.Date;

import lombok.Data;

/**

* 定义用于封装日志信息的一个pojo对象,这样的对象,在定义时要遵循一下规则

* 1)属性尽量都用对象类型

* 2)提供无参数构造函数

* 3)提供set/get方法,boolean类型变量不能以is作为前缀

* 4)实现序列化接口并手动添加序列化id(便于后续对此对象进行序列化):在java中建议所有用于存储数据 的对象都实现

* FAQ?

* 1)为什么要实现序列化接口

* 2)什么是序列化?(将对象转化为字节)

* 3)为什么要序列化?应用在什么场景?(将数据持久化,或将数据存储到缓存中)

* 4)什么是反序列化?(将字节转换为对象

* 5)如何序列化和反序列化

* 5.1)设计类是要实现序列化接口

* 5.2)构建IO对象(ObjectOutputStream/ObjectinputStream)

* 5.3)通过I/O对象进行序列化和反序列化

* @author Administrator

*

*/

@Data

public class SysLog implements Serializable{

private static final long serialVersionUID = -1592163223057343412L;

private Integer id;

//用户名

private String username;

//用户操作

private String operation;

//请求方法

private String method;

//请求参数

private String params;

//执行时长(毫秒)

private Long time;

//ip地址

private String ip;

//创建时间

private Date createdTime;

}

3.2对获取的信息进行封装(获取分页信息的页码值、页面大小(就是每页所显示的记录)、获取的表总共记录数、总页数 、当前记录)package com.cy.pj.sys.pojo;

import java.util.List;

import lombok.Data;

/**

*

* @author PageObject 为业务封装分业务相关数据的BO对象

* @param 参数化的类型(泛型)

*/

@Data

public class PageObject {//类名:类泛型(这里的泛型用于约束类中的属性,方法参数,方法的返回值)

/**当前页的页码值 */

private Integer pageCurrent=1;

/**页面大小*/

private Integer pageSize=3;

/**总行数(通过查询获得)*/

private Integer rowCount=0;

/**总页数(通过计算获得)*/

private Integer pageCount=0;

/**当前页记录*/

private List records;

}

3.3处理异常进行封装package com.cy.pj.sys.pojo;

public class JsonResult {

/**

* 状态码

*/

private int state=1;

/**

* 状态信息

*/

private String message="ok";

/**

* 正确数据

*/

private Object data;

public JsonResult() {

}

public JsonResult(String message) {

this.message = message;

}

public JsonResult(Object data) {

this.data = data;

}

public JsonResult(Throwable t) {

this.state=0;

this.message=t.getMessage();

}

public int getState() {

return state;

}

public void setState(int state) {

this.state = state;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

}

4、写service接口package com.cy.pj.sys.service;

import com.cy.pj.sys.pojo.PageObject;

import com.cy.pj.sys.pojo.SysLog;

public interface SysLogService {

PageObject findPageObject(String username,Integer pageCurrent);

}

5、写实现service接口的实现类package com.cy.pj.sys.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import com.cy.pj.sys.dao.SysLogDao;

import com.cy.pj.sys.pojo.PageObject;

import com.cy.pj.sys.pojo.SysLog;

import com.cy.pj.sys.service.SysLogService;

import om.cy.pj.common.exception.ServiceException;

@Service

public class SysLogServiceImpl implements SysLogService {

@Autowired

private SysLogDao sysLogDao;

@Override

public PageObject findPageObject(String username, Integer pageCurrent) {

// 1.验证参数的合法性

// 1.1验证pageCurrent的合法性

// 不合法抛出IllegalArgumentException异常

if (pageCurrent == null || pageCurrent < 1)

throw new IllegalArgumentException("当前也显示不正确");

// 基于条件查询总记录数

// 2.1执行查询

int rowCount = sysLogDao.getRowCount(username);

// 2.2验证查询结果,假如结果为0不在执行如下操作

if (rowCount == 0)

throw new ServiceException("系统登录没有查到对应的记录");

// 3.基于条件查询当前页记录(pageSize定义为2)

// 3.1)定义pageSize

int pageSize = 2;

//3.2计算startIndex

int startIndex=(pageCurrent-1)*pageSize;

//3.3执行当前数据的查询操作

List records = sysLogDao.findPageObjects(username, startIndex, pageSize);

//4.对分页信息以及当前页记录进行封装

//4.1 构建PageObject对象

PageObject pageObject = new PageObject<>();

//4.2封装数据

pageObject.setPageCurrent(pageCurrent);

pageObject.setPageSize(pageSize);

pageObject.setRowCount(rowCount);

pageObject.setRecords(records);

pageObject.setPageCount((rowCount-1)/pageSize+1);

//5.返回封装结果

return pageObject;

}

}

5.自定义异常package om.cy.pj.common.exception;

public class ServiceException extends RuntimeException {

public ServiceException() {

super();

}

public ServiceException(String message) {

super(message);

}

public ServiceException(Throwable cause) {

super(cause);

}

}

/定义全局异常处理类,对控制层可能出现的异常,进行统一异常处理,/package om.cy.pj.common.web;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseBody;

import com.cy.pj.sys.pojo.JsonResult;

/**

* @ControllerAdvice 注解描述的类为Spring web(MVC)

* 控制层的一个全局异常处理对象,当控制层出现异常以后,首先会检测控制层类中是否有异常处理方法

* 假如的没有则会查找是否有@ControllerAdvice注解描述的类,然后检测全局异常处理类中是否

* 有合适的异常处理方法,假如有则直接调用方法处理异常

* @author Administrator

*/

/*定义全局异常处理类,对控制层可能出现的异常,进行统一异常处理,*/

@ControllerAdvice

public class GlobalExceptionHandler {

/**

* @ExceptionHandlerzhege 这个注解描述的方法是异常处理方法,注解中定义的异常类型,

* 为此方法的异常处理类型(当然也可以处理异常类型的子类类型)在异常处理方法中通常会定义一个异常参数,来接收异常对象

* @return

*/

@ExceptionHandler(RuntimeException.class)

@ResponseBody

public JsonResult doHandleRuntimeException(RuntimeException e) {

e.printStackTrace();// 也可以写日志

// 异常信息

return new JsonResult(e);// 封装

}

}

controller类@Controller

public class PageController {

@Autowired

private SysLogService sysLogService;

/*

* 在Controller类中添加分页请求处理方法

*/

@RequestMapping("doFindPageObjects")

@ResponseBody

public JsonResult doFindPageObjects(String username,Integer pageCurrent) {

PageObject findPageObject = sysLogService.findPageObject(username, pageCurrent);

return new JsonResult(findPageObject);

}

html页面和js写的方法

数据显示页面的js编写方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值