10—mybatis 通用mapper插件 pagehelper 分页

Posted 金子开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10—mybatis 通用mapper插件 pagehelper 分页相关的知识,希望对你有一定的参考价值。

spring boot真的太好用了,大家以后多多使用,今天来说说pagehelper 来做mybatis分页,我用的是spring boot 做的开发,后面会把源码发出来。

pagehelper(https://github.com/pagehelper/Mybatis-PageHelper) 是什么我就不多说了,网上太多太多了。

还是上代码吧

Card表

CREATE TABLE `card` (
  `id` int(11) NOT NULL DEFAULT \'0\',
  `cid` int(11) DEFAULT NULL,
  `title` varchar(60) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `card` VALUES (\'1\', \'2\', \'aldsjkfla\');
INSERT INTO `card` VALUES (\'2\', \'3\', \'2222aldsjkfla\');
INSERT INTO `card` VALUES (\'3\', \'1\', \'2323\');
INSERT INTO `card` VALUES (\'4\', \'4\', \'4444444444\');
INSERT INTO `card` VALUES (\'5\', \'5\', \'55555555555555\');
INSERT INTO `card` VALUES (\'6\', \'6\', \'66666666666666\');
INSERT INTO `card` VALUES (\'7\', \'7\', \'77777777777777\');
INSERT INTO `card` VALUES (\'8\', \'8\', \'88888888888888888888\');
INSERT INTO `card` VALUES (\'9\', \'9\', \'999999999999999999\');
INSERT INTO `card` VALUES (\'10\', \'10\', \'swswswsws\');
INSERT INTO `card` VALUES (\'11\', \'11\', \'112121222222\');
INSERT INTO `card` VALUES (\'12\', \'12\', \'aaaaaa\');
INSERT INTO `card` VALUES (\'13\', \'13\', \'asdfasdfadfadfadsf\');
INSERT INTO `card` VALUES (\'14\', \'14\', \'aswsweerererer\');
INSERT INTO `card` VALUES (\'15\', \'15\', \'dfdfdfdfdfa\');
INSERT INTO `card` VALUES (\'16\', \'16\', \'dfdsfsadf\');
INSERT INTO `card` VALUES (\'17\', \'17\', \'agtgtgtgtg\');
INSERT INTO `card` VALUES (\'18\', \'18\', \'aaaggtgtg\');

 

下面开始编码:

1.新建一个spring boot项目

 

2.导包

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.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.zn.test</groupId>
    <artifactId>testpage</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>testpage</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.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>
        <!--自动构造java-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.14.8</version>
        </dependency>
        <!--通用mapper启动器-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>

        <!--分页助手启动器-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

3. 配置文件,包括数据地址等信息

application.yml

server:
  port: 8099
spring:
  application:
    name: testpage
  datasource:
    url: jdbc:mysql://localhost:3306/card
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

#显示sql语句
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

4.建立实体类 Card.java

package org.zn.test.testpage.entity;

import lombok.Data;
import lombok.ToString;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Id;
import javax.persistence.Table;

@Table(name = "card")
@Data
@ToString
public class Card {
    @Id
    @KeySql(useGeneratedKeys = true)
    private Integer id;
    private Integer cid;
    private String title;
}

5.建立Mapper 

CardMapper.java,这里注意用是通用mapper来实现的,所有继承tk.mybatis.mapper.common.Mapper的Mapper

package org.zn.test.testpage.mapper;

import org.zn.test.testpage.entity.Card;
import tk.mybatis.mapper.common.Mapper;

public interface CardMapper extends Mapper<Card> {

}

6.建立Servcie

CardService.java


package org.zn.test.testpage.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.zn.test.testpage.entity.Card;
import org.zn.test.testpage.mapper.CardMapper;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Service
public class CardService {
@Autowired
private CardMapper cardMapper;

public List<Card> GetPageList(Integer page,Integer rows,String sortBy,Boolean desc,String key)
{
//分页
PageHelper.startPage(page,rows);
//过滤
Example example=new Example(Card.class);
if(key!=""&&!key.equals("")){
example.createCriteria().orLike("title","%"+key+"%");
}
//排序
if(sortBy!=""&&!key.equals("")){
String orderByClause=sortBy+(desc?" DESC":" ASC");
example.setOrderByClause(orderByClause);
}
//查询
List<Card> list=cardMapper.selectByExample(example);
PageInfo<Card> info=new PageInfo<Card>(list);
return info.getList();
}

}

7.建立Controller

HomeController.java

package org.zn.test.testpage.controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.zn.test.testpage.entity.Card;
import org.zn.test.testpage.service.CardService;

import java.util.List;

@RestController
@RequestMapping("/home")
public class HomeController {
    @Autowired
    private CardService cardService;

    @RequestMapping("/index")
    public String Index(int page,String key) {
        List<Card> list = cardService.GetPageList(page, 5, "id", true, key);

        StringBuilder sb = new StringBuilder();
        for (Card item : list) {
            sb.append(item+"</br>");
        }
        return sb.toString();
    }

}

8.配置启动类

TestpageApplication.java 就是spring boot启动类,要注意这里用@MapperScan("org.zn.test.testpage.mapper"),进入整包注入。

package org.zn.test.testpage;

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

@SpringBootApplication
@MapperScan("org.zn.test.testpage.mapper")
public class TestpageApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestpageApplication.class, args);
    }

}

 

9.启动,并访问

http://localhost:8099/home/index?page=1&key=a

 

 

看一下,是数据分页。

 点击下载代码

以上是关于10—mybatis 通用mapper插件 pagehelper 分页的主要内容,如果未能解决你的问题,请参考以下文章

Springboot集成mybatis通用Mapper与分页插件PageHelper(推荐)

Mybatis插件:自定义插件分页及通用Mapper

MyBatis通用Mapper和PageHelper

SpringBoot框架之通用mapper插件(tk.mybatis)

spring-boot | 整合通用Mabatis 分页插件PageHelper

Mybatis 通用 Mapper 3.3.9 发布