springboot+mybatis及利用PageHelper实现分页(后端)

分页实现简单代码

PageHelper.startPage(pageNum,pageSize);
List<User> userList = userRepository.getUserList();
PageInfo<User> pageInfo = new PageInfo<>(userList);

分页实现简单过程

数据库

springboot+mybatis及利用PageHelper实现分页(后端)_第1张图片
maven配置文件

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.8.RELEASE</version>
		<relativePath/>
	</parent>
	<groupId>com.test</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
	
		<!-- spring mvc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	
		<!-- 数据库相关 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>
		
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.0</version>
		</dependency>

		<!-- 分页 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.12</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

springboot 项目配置文件。

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/Test?serverTimezone=PRC&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=wen
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.test.demo.entity

实体类

User.java

package com.test.demo.entity;

import java.util.Date;

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Date in_time;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getIn_time() {
        return in_time;
    }

    public void setIn_time(Date in_time) {
        this.in_time = in_time;
    }
}

数据访问

UserRepository.java

package com.test.demo.repository;

import com.test.demo.entity.User;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserRepository {
    List<User> getUserList();
}

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.test.demo.repository.UserRepository">
    
    <select id="getUserList" resultType="User">
        select * from tb_user
    </select>
    
</mapper>

服务层

UserService.java

package com.test.demo.service;

import com.github.pagehelper.PageInfo;
import com.test.demo.entity.User;

public interface UserService {
    PageInfo<User> getUserList(int page, int limit);
}

UserServiceImpl.java

package com.test.demo.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.test.demo.entity.User;
import com.test.demo.repository.UserRepository;
import com.test.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public PageInfo<User> getUserList(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<User> userList = userRepository.getUserList();
        PageInfo<User> pageInfo = new PageInfo<>(userList);
        return pageInfo;
    }
}

控制器

UserController.java

package com.test.demo.controller;

import com.github.pagehelper.PageInfo;
import com.test.demo.entity.User;
import com.test.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/list")
    public PageInfo<User> list(@RequestParam(value = "page",required = false,defaultValue = "1") int page) {
        return userService.getUserList(page,5);
    }
}

如果写前端,springboot2以后,static里面的静态文件可能会无法访问,可以使用下面的类。com/test/demo/configure

WebMvcConfig.java

package com.test.demo.configure;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Component
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
}

启动类

DemoApplication.java

package com.test.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.test.demo.repository")
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

测试

http://localhost:8080/list?page=1

{“total”:8,“list”:[{“id”:1,“name”:“张三”,“age”:21,“in_time”:“2019-10-02T13:47:40.000+0000”},{“id”:2,“name”:“李四”,“age”:15,“in_time”:“2019-10-02T13:47:55.000+0000”},{“id”:3,“name”:“王五”,“age”:54,“in_time”:“2019-10-02T13:48:05.000+0000”},{“id”:4,“name”:“赵六”,“age”:33,“in_time”:“2019-10-02T13:48:16.000+0000”},{“id”:5,“name”:“孙七”,“age”:12,“in_time”:“2019-10-02T13:48:51.000+0000”}],“pageNum”:1,“pageSize”:5,“size”:5,“startRow”:1,“endRow”:5,“pages”:2,“prePage”:0,“nextPage”:2,“isFirstPage”:true,“isLastPage”:false,“hasPreviousPage”:false,“hasNextPage”:true,“navigatePages”:8,“navigatepageNums”:[1,2],“navigateFirstPage”:1,“navigateLastPage”:2}

http://localhost:8080/list?page=2

{“total”:8,“list”:[{“id”:6,“name”:“周八”,“age”:53,“in_time”:“2019-10-02T13:49:02.000+0000”},{“id”:7,“name”:“吴九”,“age”:48,“in_time”:“2019-10-02T13:49:25.000+0000”},{“id”:8,“name”:“郑十”,“age”:22,“in_time”:“2019-10-02T13:49:38.000+0000”}],“pageNum”:2,“pageSize”:5,“size”:3,“startRow”:6,“endRow”:8,“pages”:2,“prePage”:1,“nextPage”:0,“isFirstPage”:false,“isLastPage”:true,“hasPreviousPage”:true,“hasNextPage”:false,“navigatePages”:8,“navigatepageNums”:[1,2],“navigateFirstPage”:1,“navigateLastPage”:2}

你可能感兴趣的:(springboot)