springBoot+mapper+pagehelper分页

最近看了springBoot分页相关的很多文章,但总有些坑趟不过去, 在此记录相关注意的点以及问题

一.目的:实现select下的分页实现

二.实现

2.1新建springBoot项目,项目结构如下

 

2.2添加pom依赖及配置文件application.properties

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</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-test</artifactId>
      <scope>test</scope>
   </dependency>

   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
   </dependency>

   <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.1</version>
   </dependency>

   <dependency>
      <groupId>tk.mybatis</groupId>
      <artifactId>mapper-spring-boot-starter</artifactId>
      <version>1.1.5</version>
   </dependency>

   <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
   </dependency>

   <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
   </dependency>
   
   <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.0</version>
   </dependency>
   <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.3</version>
   </dependency>
   <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator</artifactId>
      <version>1.3.5</version>
   </dependency>
备注:亲测pagehelper依赖在版本为5.1.2时分页失败,但4.1.0时可用

application.properties

# mybatis 配置
mybatis.type-aliases-package=com.example.demo.model
mybatis.mapper-locations=classpath:mapper/*.xml
# 通用 Mapper 配置
mapper.mappers=com.example.demo.util.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
# 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#server.port=9091

logging.level.com.example.demo.mapper=trace
spring.datasource.url=jdbc:mysql://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=950930
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


2.3实体类

package com.example.demo.model;

import javax.persistence.*;

@Table(name = "SYS_USER")
public class SysUser {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String username;

    private String password;
省略get,set方法


2.4通用mapper类MyMapper,

package com.example.demo.util;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
}

实体mapper只需要继承MyMapper即可,业务方法中便可以使用通用mapper中的方法

SysUserMapper:

package com.example.demo.mapper;

import com.example.demo.model.SysUser;
import com.example.demo.util.MyMapper;

public interface SysUserMapper extends MyMapper<SysUser> {
}
2.5server层

package com.example.demo.service;

import com.example.demo.model.SysUser;

import java.util.List;

public interface SysUserService {

   List<SysUser> findAll();



}

server实现层:

package com.example.demo.service.Impl;

import com.example.demo.mapper.SysUserMapper;
import com.example.demo.model.SysUser;
import com.example.demo.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;

    @Override
    public List<SysUser> findAll() {
        return sysUserMapper.selectAll();
    }
}

2.6SysUserController

package com.example.demo.controller;

import com.example.demo.model.SysUser;
import com.example.demo.service.SysUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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;

import java.util.List;

@RestController
public class SysUserController {


    @Autowired
    private SysUserService sysUserService;

    @RequestMapping("all")
    public PageInfo<SysUser> findAll(@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum){
//调用PageHelper的start方法实现分页设置,pageNum为当前页数,3为每页有3行数据,如下即当前为第1页有3行数据,如通过http://localhost:9091/all/?pageNum=3跳到第3页
        PageHelper.startPage(pageNum,3);
        List<SysUser> list = sysUserService.findAll();
//使用pageInfo
        PageInfo<SysUser>  pageInfo = new PageInfo<>(list);
        return pageInfo;
    }
}
2.7最主要的一点,记得配置pageHelper,之前试过好多次分页失败都是配置错误

在springBoot启动类注入

package com.example.demo;

import com.github.pagehelper.PageHelper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.util.Properties;

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
//pageHelper配置项
   @Bean
   public PageHelper pageHelper() {
      System.out.println("MyBatisConfiguration.pageHelper()");
      PageHelper pageHelper = new PageHelper();
      Properties p = new Properties();
      p.setProperty("offsetAsPageNum", "true");
      p.setProperty("rowBoundsWithCount", "true");
      p.setProperty("reasonable", "true");
      pageHelper.setProperties(p);
      return pageHelper;
   }

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

三.项目启动访问http://localhost:9091/all


注意点:

1.分页的配置是否加上

2.项目注解的注入,serviceImpl层的@Service,mapper层的@Mapper ,启动类的@MapperScan(mapper全类名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值