zoukankan      html  css  js  c++  java
  • Sprin Boot2.0之整合Mybatis整合分页插件

    pageHelper

    PageHelper 是一款好用的开源免费的 Mybatis 第三方物理分页插件

    物理分页

    支持常见的 12 种数据库。Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等

    支持多种分页方式

    支持常见的 RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用

    pageHelper底层会帮助生成一下分页语句  limit相关

    废话不多说,赶紧动手!

    pom文件:

    <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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>pageHelper</groupId>
      <artifactId>com.toov5.pageHelper</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.0.RELEASE</version>
    	</parent>
    	<dependencies>
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter</artifactId>
    		</dependency>
    		<!-- 测试 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>1.1.1</version>
    		</dependency>
    		<!-- mysql 依赖 -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    		<!-- springboot-web组件 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<!-- springboot 整合 pagehelper -->
    		<dependency>
    			<groupId>com.github.pagehelper</groupId>
    			<artifactId>pagehelper-spring-boot-starter</artifactId>
    			<version>1.2.5</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.commons</groupId>
    			<artifactId>commons-lang3</artifactId>
    			<version>3.7</version>
    		</dependency>
    	</dependencies>
      
    </project>
    

     application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    
    logging.level.com.example.demo.dao=DEBUG
    pagehelper.helperDialect=mysql
    pagehelper.reasonable=true
    pagehelper.supportMethodsArguments=true
    pagehelper.params=count=countSql
    pagehelper.page-size-zero=true
    

    entity:

    package com.toov5.entity;
    
    import lombok.Data;
    
    @Data
    public class User {
    
        private Integer id;
        private String name;
        private Integer age;
    }

    mapper:

    package com.toov5.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Select;
    
    import com.toov5.entity.User;
    
    public interface UserMapper {
        @Select("SELECT * FROM USERS ")
        List<User> findUserList();
    }

    service

    package com.toov5.service;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.toov5.entity.User;
    import com.toov5.mapper.UserMapper;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
        //当前页 一页多少个  mysql通过limit分页的哈
        public PageInfo<User> findUserList(int page, int size) {
            // 开启分页插件,放在查询语句上面 帮助生成分页语句
            PageHelper.startPage(page, size); //底层实现原理采用改写语句   将下面的方法中的sql语句获取到然后做个拼接 limit  AOPjishu 
            List<User> listUser = userMapper.findUserList();
            // 封装分页之后的数据  返回给客户端展示  PageInfo做了一些封装 作为一个类
            PageInfo<User> pageInfoUser = new PageInfo<User>(listUser);
            return pageInfoUser;
        }
    
    }

    controller

    package com.toov5.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.github.pagehelper.PageInfo;
    import com.toov5.entity.User;
    import com.toov5.service.UserService;
    
    @RestController
    public class IndexController {
        @Autowired
        private UserService userService;
    
        @RequestMapping("/findUserList")
        public PageInfo<User> findUserList(int page, int size) {
            System.out.println("#############################");
            return userService.findUserList(page, size);
        }
    
    }

    启动类

    package com.toov5;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @MapperScan("com.toov5.*")
    @SpringBootApplication
    public class PageHelper {
    
        public static void main(String[] args) {
            SpringApplication.run(PageHelper.class, args);
        }
    
    } 

    项目启动:

    访问

     

    json解析:

    {
    	"total": 4,
    	"list": [{
    		"id": 1,
    		"name": "toov5",
    		"age": 12
    	}, {
    		"id": 2,
    		"name": "cc",
    		"age": 99
    	}],
    	"pageNum": 1,
    	"pageSize": 2,
    	"size": 2,
    	"startRow": 1,
    	"endRow": 2,
    	"pages": 2,
    	"prePage": 0,
    	"nextPage": 2,
    	"isFirstPage": true,
    	"isLastPage": false,
    	"hasPreviousPage": false,
    	"hasNextPage": true,
    	"navigatePages": 8,
    	"navigatepageNums": [1, 2],
    	"navigateFirstPage": 1,
    	"navigateLastPage": 2,
    	"firstPage": 1,
    	"lastPage": 2
    }
    

      小伙伴们是不是返回的信息量十足呀~

    PS:如果每个查询方面前面都这样:

    如果每个方法查询之前 之后 都加这么个方法的话 很冗余啊

    冗余 则 aop封装 

     模板设计方法模式!!!哈哈哈  有兴趣的可以玩玩

  • 相关阅读:
    ORA-1652: unable to extend temp segment by xxx in tablespace
    Oracle导入异常: unable to create INITIAL extent for segment in tablespace MY_DATA(转)
    EL表达式取值
    JSP错误:According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    springmvc注解绑定参数心得
    springmvc绑定参数出现的异常
    springMVC参数的传递接收方式(转)
    springmvc注解@
    跟着开涛springmvc学习(转)
    CSS div文本垂直居中
  • 原文地址:https://www.cnblogs.com/toov5/p/9823670.html
Copyright © 2011-2022 走看看