图片展示
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编写方法