项目中用到了分页 然后我使用的是mybatis的插件pagehelper
官网地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
需要导入jar包
坐标地址:
com.github.pagehelper
pagehelper
5.1.2
在spring配置文件中加上配置
helperDialect=mysql
reasonable=true
1. 涉及的2个类 PageHelper PageInfo
只有紧跟在 PageHelper.startPage 方法后的第一个MyBatis 的查询(select)方法会被分页
PageHelper.startPage(now,2);//该工具类设置当前页码数和每页显示的行数
List
//PageInfo工具类存放查询的结果集
PageInfo
map.put("pageInfo",pageInfo);
2. 页面用法
第${pageInfo.pageNum}/${pageInfo.pages}页// pageNum代表当前页码数 pages总页数
项目目录:
BookController.java
@Controller
@SessionAttributes({"bookTypes", "bookInfos"})
public class BookController implements ServletContextAware {
private ServletContext servletContext;
@Autowired
BookTypeService bookTypeService;
@Autowired
BookService bookService;
/**
* 跳转到首页
* @param map 保存的数据类似于
* @return
*/
@RequestMapping("/add.htm")
public String getBookType(ModelMap map) {
List bookTypes = bookTypeService.queryAll();
PageHelper.startPage(1, 3);
List bookInfos = bookService.queryAll();
PageInfo pageInfo = new PageInfo(bookInfos);
map.put("pageInfo", pageInfo);
System.out.println(bookInfos);
map.put("bookTypes", bookTypes);
return "forward:/list.jsp";
}
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
/**
* 根据图书id删除图书 参数为数组是因为可以批量删除 也可以穿单个bookid
* @param bookid 图书id
* @return 跳转到查询
*/
@RequestMapping(value = "/ajaxDelect.htm",produces={"application/json;","text/html;charset=UTF-8;"})
public String ajaxDelect(Integer[] bookid){
int i = bookService.deleteByIds(bookid);
System.err.println("受影响的行数:"+i);
System.out.println("1111111");
return "forward:/ajaxQuety.htm";
}
//点击详情 先把数据查询出来跳转到详情页面并赋值
// 因为修改和详情都会调用这个方法 所以多加一个参数
@RequestMapping("queryByid.htm")
public String queryByid(@RequestParam("bookid")Integer bookid,ModelMap modelMap,Integer type){
BookInfo bookInfo = bookService.queryByid(bookid);
modelMap.put("bookInfo",bookInfo);
//如果为type==1则为修改页面 2为详情页面
if (type==1) {
return "forward:/edit.jsp";
}else {
return "forward:/showBook.jsp";
}
}
/**
* 修改
* @param bookInfo 图书
* @return 跳转到首页
*/
@RequestMapping("editBookInfoById.htm")
public String editBookInfoById(BookInfo bookInfo){
String path = bookInfo.getPath();
System.err.println(path);
int i = bookService.updateBookInfo(bookInfo);
System.err.println("修改条数"+i);
return "forward:/add.htm";
}
/**
* 新增
* @param bookInfo 图书
* @return 返回到首页
*/
@RequestMapping("addBook.htm")
public String addBook(BookInfo bookInfo){
int i = bookService.addBook(bookInfo);
System.err.println("新增的条数"+i);
return "forward:/add.htm";
}
/**
* ajax 查询
* @param bookTypeid 图书类型id
* @param bookname 图书名称
* @param borrow 是否借阅
* @param now 当前页数
* @return 返回json类型的图书集合
*/
@RequestMapping(value = "/ajaxQuety.htm",produces={"application/json;","text/html;charset=UTF-8;"})
@ResponseBody//返回结果不会被解析为跳转路径
public String ajaxQuery(@RequestParam(value="bookTypeid",required=false,defaultValue="0")String bookTypeid,
String bookname,
@RequestParam(value="borrow",required=false,defaultValue="-1") String borrow,
@RequestParam(value = "now", required = false, defaultValue = "1")Integer now) {
System.out.println("bookTypeid:"+bookTypeid+"bookname:"+ bookname+"borrow:"+borrow);
//分页 now 页码 pagesize 显示几条
PageHelper.startPage(now, 3);
List bookInfos = bookService.query(bookTypeid, bookname, borrow);
//将数据库获取到数据放入pageInfo里 在jsp页面上获取 需要通过pageInfo.list获取
PageInfo pageInfo = new PageInfo(bookInfos);
//转成json返回出去
JSONObject jsonObject = new JSONObject();
jsonObject.put("pageInfo", pageInfo);
//因为里面有date类型数据所以需要转换一下
return JSON.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd");
}
/**
* 照片上传和回显
* @param fileImage 图片名称
* @return json类型的对象
*/
@RequestMapping("imageupload.htm")
@ResponseBody
public String imageUpload(@RequestParam("fileImage") CommonsMultipartFile fileImage) {
System.out.println("111111");
// 获取上传图片的位置
String path = servletContext.getRealPath("/images/");
System.out.println("上传的路径为:" + path);
// 获取文件名称
String name = fileImage.getOriginalFilename();
// 创建file对象 写入
File file = new File(path, name);
try {
fileImage.getFileItem().write(file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将上传的图片路径以json的方式返回客户端
String imagePath = "images/" + name;
JSONObject jsonObject = new JSONObject();
jsonObject.put("imagePath", imagePath);
// 将对象转为json格式
String json = jsonObject.toJSONString();
System.out.println("json:" + json);
return json;
}
}
list.jsp(首页)
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
Title
edit.jsp(修改页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
修改
显示的页面(有点丑)
最后附上完整代码,数据库脚本也有
github地址:https://github.com/xingxiaozhou/BookManger