spring boot integration pagehelper

Here are a few ways

  • Completely configured (highlights) 
  • Full code implementation 

Completely integrated configuration pagehelper

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <groupId>com.mes.cloud</groupId>
    <artifactId>mes-cloud-starter</artifactId>
    <package>jar</package>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
             <!-- Spring Boot Web 依赖 -->
            <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- Spring Boot Mybatis 依赖 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
            <!-- 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.0</version>
            </dependency>
            <!-- springboot对mybatis的整合支持还是比较苛刻的,版本不兼容问题比较严重,pageHelper分页插件也是一样,不是最新的版本就没有问题,有时需要降低版本进行支持,这里的版本是调试通过可以用的版本,其他应该还有可以匹配的版本,但是没有去测试 --> 
            <!-- spring boot pagehelper autoconfigure依赖 版本有兼容性问题 第一种方式依赖的包-->  
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
                <version>1.1.1</version>
            </dependency>
            <!-- spring boot 整合pagehelper依赖 版本有兼容性问题 第一种方式依赖的包-->  
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
</project>

YML

#mybatis配置 第一种和第二种需要 第三种不需要
mybatis:
  #mapper.xml文件位置
  mapper-locations: classpath*:mapper/*.xml
  check-config-location: true
  #对应mapper的实体类
  type-aliases-package: com.zoo.cloud.**.dto

#pagehelper分页配置 第二种和第三种不需要 重点讲的第一种需要
pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

The use of code implementation

import java.util.Properties;

import org.apache.ibatis.plugin.Interceptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

import javax.sql.DataSource;


@Configuration
@ComponentScan
public class MyBatisConfig {


    /**
     *  第二种方式 在代码中指定pagehelper的配置
    */
    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        p.setProperty("dialect", "mysql"); // 配置mysql数据库
        pageHelper.setProperties(p);
        return pageHelper;
    }



    @Autowired
    private DataSource dataSource;
    /**
     *  第三种方式 代码中指定xml和实体类的对应关系
    */
    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactoryBean sqlSessionFactory(ApplicationContext applicationContext) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // sessionFactory.setPlugins(new Interceptor[]{new PageInterceptor()});
        sessionFactory.setMapperLocations(applicationContext.getResources("classpath*:mapper/*.xml"));
        org.apache.ibatis.session.Configuration configuration =  sessionFactory.getObject().getConfiguration();
        configuration.setMapUnderscoreToCamelCase(true);
        sessionFactory.setConfiguration(configuration);
        Interceptor[] interceptor =new PageHelper[1];
        interceptor[0] = pageHelper();
        sessionFactory.setPlugins(interceptor);
        return sessionFactory;
    }


}

In fact, the integration of pagehelper very simple, but the first approach when we must pay special attention to the dependent jar package compatibility issues, or will pack very strange question, the second and third problem does not exist.

Guess you like

Origin blog.csdn.net/qq_36850813/article/details/95196255