第一步:新建maven项目,项目结构图如下:
第二步:配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springboot</groupId>
<artifactId>spring-boot-mybatis-pagehelper</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-mybatis-pagehelper Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
<java-version>1.8</java-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
<build>
<finalName>spring-boot-mybatis-pagehelper</finalName>
</build>
</project>
第三步:配置application.yml
server:
port: 8080
spring:
thymeleaf:
prefix: classpath:templates/
mode: html5
cache: false
datasource:
name: test
url: jdbc:mysql://localhost:3306/test_springboot?useUnicode=true&characterEncoding=utf-8
username: root
password: dsb520
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.spring.entity
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
第四步:开始编码
entity层(User)
package com.spring.entity;
public class User {
private int id;
private String name;
private char sex;
private String address;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", address=" + address + ", age=" + age + "]";
}
}
dao层(IUserDao)
package com.spring.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.spring.entity.User;
@Mapper
public interface IUserDao {
/***
* 分页查询
* @param pageNo
* @param pageSize
* @return
*/
List<User> getPageUserList();
}
service层(IUserService)
package com.spring.service;
import java.util.List;
import com.spring.entity.User;
public interface IUserService {
/***
* 分页查询
* @param pageNo
* @param pageSize
* @return
*/
List<User> getPageUserList();
}
impl层(UserServiceImpl)
package com.spring.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.spring.dao.IUserDao;
import com.spring.entity.User;
import com.spring.service.IUserService;
@Service
public class UserServiceImpl implements IUserService{
@Autowired
IUserDao userDao;
public IUserDao getUserDao() {
return userDao;
}
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public List<User> getPageUserList(){
List<User> list = this.userDao.getPageUserList();
return list;
}
}
controller层(UserController)
package com.spring.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.spring.entity.User;
import com.spring.service.IUserService;
@Controller
@RequestMapping("/userController/")
public class UserController {
@Autowired
IUserService userService;
private static final int pageSize = 5;
@RequestMapping("/index")
public String index(Model model, int pageNo) {
// 开始分页,pageNo=当前页数, pageSize=每页显示几条
PageHelper.startPage(pageNo, pageSize);
List<User> list = this.userService.getPageUserList();
// 设置当前页的数据
PageInfo<User> pageInfo = new PageInfo<User>(list);
model.addAttribute("pageInfo", pageInfo);
model.addAttribute("list", list);
return "index";
}
}
mapping层(UserMapper.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.spring.dao.IUserDao">
<!-- 分页查询 -->
<select id="getPageUserList" resultType="User">
select * from user
</select>
</mapper>
templates层(index.html)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
<style>
.content{
margin: 0 auto;
text-algin: center;
width:500px;
}
</style>
</head>
<body>
<div class="content">
<table border="1">
<thead>
<tr>
<th>Id</th>
<th>用户名</th>
<th>性别</th>
<th>地址</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr th:each="user : ${list}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.sex}"></td>
<td th:text="${user.address}"></td>
<td th:text="${user.age}"></td>
</tr>
</tbody>
</table>
<div class="page">
<span th:if="${pageInfo.hasPreviousPage}">
<a th:href="'?pageNo=1'">首页</a>
</span>
<span th:if="${pageInfo.hasPreviousPage}">
<a th:href="'?pageNo='+${pageInfo.prePage}">上一页</a>
</span>
<span th:each="nav : ${pageInfo.navigatepageNums}">
<a th:href="'?pageNo='+${nav}" th:text="${nav}" th:if="${nav != pageInfo.pageNum}"></a>
<label style="font-weight: bold" th:if="${nav == pageInfo.pageNum}" th:text="${nav}"></label>
</span>
<span th:if="${pageInfo.hasNextPage}">
<a th:href="'?pageNo='+${pageInfo.nextPage}">下一页</a>
</span>
<span th:if="${pageInfo.hasNextPage}">
<a th:href="'?pageNo='+${pageInfo.pages}">末页</a>
</span>
<hr />
<div>当前页号:<span th:text="${pageInfo.pageNum}"></span></div>
<div>每页条数:<span th:text="${pageInfo.pageSize}"></span></div>
<div>起始行号:<span th:text="${pageInfo.startRow}"></span></div>
<div>终止行号:<span th:text="${pageInfo.endRow}"></span></div>
<div>总结果数:<span th:text="${pageInfo.total}"></span></div>
<div>总页数:<span th:text="${pageInfo.pages}"></span></div>
<hr />
<div>是否为第一页:<span th:text="${pageInfo.isFirstPage}"></span></div>
<div>是否为最后一页:<span th:text="${pageInfo.isLastPage}"></span></div>
<div>是否有前一页:<span th:text="${pageInfo.hasPreviousPage}"></span></div>
<div>是否有下一页:<span th:text="${pageInfo.hasNextPage}"></span></div>
</div>
</div>
</body>
</html>
启动类(ApplicationStart)
package com.spring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;
@SpringBootApplication
@Component("com.spring.*")
public class ApplicationStart {
public static void main(String[] args) {
SpringApplication.run(ApplicationStart.class, args);
}
}
db(user)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sex` char(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=215 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('101', '邓总', '男', '广州', '23');
INSERT INTO `user` VALUES ('102', '唐总', '男', '郴州', '23');
INSERT INTO `user` VALUES ('103', '王总', '女', '深圳', '21');
INSERT INTO `user` VALUES ('104', '李总', '女', '长沙', '24');
INSERT INTO `user` VALUES ('106', '刘总', '男', '湘潭', '23');
INSERT INTO `user` VALUES ('107', '胡总', '女', '韶山', '22');
INSERT INTO `user` VALUES ('111', '乐总', '男', '岳阳', '22');
INSERT INTO `user` VALUES ('112', '陈总', '女', '永州', '23');
INSERT INTO `user` VALUES ('113', '郑总', '男', '怀化', '22');
INSERT INTO `user` VALUES ('114', '欧总', '女', '郑州', '21');
INSERT INTO `user` VALUES ('115', '肖总', '女', '凤凰', '25');
INSERT INTO `user` VALUES ('116', '张总', '男', '衡阳', '26');
INSERT INTO `user` VALUES ('117', '毛总', '女', '湘潭', '22');
INSERT INTO `user` VALUES ('118', '刘总', '男', '株洲', '23');
INSERT INTO `user` VALUES ('201', '邓总', '男', '广州', '23');
INSERT INTO `user` VALUES ('202', '唐总', '男', '郴州', '23');
INSERT INTO `user` VALUES ('203', '王总', '女', '深圳', '21');
INSERT INTO `user` VALUES ('204', '李总', '女', '长沙', '24');
INSERT INTO `user` VALUES ('205', '刘总', '男', '湘潭', '23');
INSERT INTO `user` VALUES ('206', '胡总', '女', '韶山', '22');
INSERT INTO `user` VALUES ('207', '乐总', '男', '岳阳', '22');
INSERT INTO `user` VALUES ('208', '陈总', '女', '永州', '23');
INSERT INTO `user` VALUES ('209', '郑总', '男', '怀化', '22');
INSERT INTO `user` VALUES ('210', '欧总', '女', '郑州', '21');
INSERT INTO `user` VALUES ('211', '肖总', '女', '凤凰', '25');
INSERT INTO `user` VALUES ('212', '张总', '男', '衡阳', '26');
INSERT INTO `user` VALUES ('213', '毛总', '女', '湘潭', '22');
INSERT INTO `user` VALUES ('214', '刘总', '男', '株洲', '23');
第五步:启动springboot,开始访问
http://localhost:8080/userController/index?pageNo=1
说下我遇到的坑:
1、sql中多了个";",导致语法错误,如下图
原因是PageHelper.startPage(pageNo, pageSize);改变了sql,如果你写了";"就代表sql已经结束了,但是pageHelper又追加了limit?,?语句进去,所以出现异常
2、访问路径没有加"?pageNo=1",导致找不到pageNo这个参数
、
原因是 index(Model model, int pageNo)方法中有pageNo这个参数,但是你却没有传入这个参数;