springBoot2整合pagehelper的爬坑经历

  • 2020 年 2 月 24 日
  • 筆記

疫情期间,在家办公,周末看pageHelper分页,遂解决问题;

首先,把正确的代码贴出来,供大家参考:

源码地址: https://gitee.com/maojindaogg/hake

1、正确的pom配置,重点注意spring-boot2.2.4.RELEASE和pagehelper1.2.12的版本搭配

<parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>2.2.4.RELEASE</version>          <relativePath/> <!-- lookup parent from repository -->      </parent>      <groupId>com.heke</groupId>      <artifactId>ssm</artifactId>      <version>0.0.1-SNAPSHOT</version>      <name>ssm</name>      <description>Demo project for Spring Boot</description>        <properties>          <java.version>1.8</java.version>      </properties>        <dependencies>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-web</artifactId>          </dependency>          <dependency>              <groupId>org.mybatis.spring.boot</groupId>              <artifactId>mybatis-spring-boot-starter</artifactId>              <version>1.3.2</version>          </dependency>          <dependency>              <groupId>mysql</groupId>              <artifactId>mysql-connector-java</artifactId>              <version>5.1.47</version>              <scope>runtime</scope>          </dependency>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-test</artifactId>              <scope>test</scope>              <exclusions>                  <exclusion>                      <groupId>org.junit.vintage</groupId>                      <artifactId>junit-vintage-engine</artifactId>                  </exclusion>              </exclusions>          </dependency>          <dependency>              <groupId>com.github.pagehelper</groupId>              <artifactId>pagehelper-spring-boot-starter</artifactId>              <version>1.2.12</version>          </dependency>          <dependency>              <groupId>org.projectlombok</groupId>              <artifactId>lombok</artifactId>              <version>1.18.10</version>          </dependency>      </dependencies>        <build>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>              </plugin>          </plugins>      </build>

2、application.properties,注意此处可以不配置

##helperDialect: mysql  ##reasonable: true  ##supportMethodsArguments: true  ##parames: count=countSql  server.port=8081    #mysql  spring.datasource.driver-class-name = com.mysql.jdbc.Driver  spring.datasource.url= jdbc:mysql://localhost:3306/hake?serverTimezone=Asia/Shanghai&characterEncoding=utf8  spring.datasource.username = root  spring.datasource.password = longfor    mybatis.mapper-locations = classpath*:mapper/*.xml  mybatis.type-aliases-package=heke.ssm

3、UserMapper

/**   * @Author: Liu Yue   * @Descripition:   * @Date; Create in 2020/2/15 16:00   **/  @Mapper  public interface UserMapper {      List<User> findAll();  }    <mapper namespace="com.heke.ssm.UserMapper">      <select id="findAll" parameterType="java.lang.String" resultType="com.heke.ssm.User" >          select * from user      </select>  </mapper>

4、User

import lombok.Data;    @Data  public class User {      // 主键id      private Integer id;      private String name;      private Integer age;  }

5、UserController测试

@Slf4j  @RestController  @RequestMapping("/user")  public class UserController {        @Autowired      private UserMapper userMapper;          @GetMapping("/findAll")      public List<User> findAll(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "20") Integer pageSize) {          PageHelper.startPage(pageNum, pageSize);          List<User> countries = userMapper.findAll();            PageInfo<User> page = PageInfo.of(countries);          System.out.println("每页展示条数:" + page.getPageSize());          System.out.println("总条数:" + page.getTotal());          System.out.println("当前页:" + page.getPageNum());          System.out.println("总页数:" + page.getPages());            return countries;      }  }

6、启动类SsmApplication启动类

@SpringBootApplication  @MapperScan("heke.ssm")  public class SsmApplication {        public static void main(String[] args) {          SpringApplication.run(SsmApplication.class, args);      }    }
错误的启动类   @SpringBootApplication(exclude = {           DataSourceAutoConfiguration.class   })   @MapperScan("heke.ssm")   @EnableScheduling   @ComponentScan(value = {"com"})   public class SsmApplication {      public static void main(String[] args) {           SpringApplication.run(SsmApplication.class, args);       }  }   DataSourceAutoConfiguration的类解读可以参考这位师兄的博客   https://blog.csdn.net/kangsa998/article/details/90231518

排(爬)查(坑)方(经)法(历): 1、把分页的正确方法,抽离出一个最简单的项目; 2、把配置信息往简单项目添加,得到错误的数据,定位错误;

最后提供执行sql

CREATE TABLE `user` (    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',    `name` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '姓名',    `age` int(3) DEFAULT NULL COMMENT '年龄',    PRIMARY KEY (`id`)  ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci