这是一个简单的SpringBoot整合实例
利用spring boot整合pagehelper实现分页功能
会介绍两种种整合方式(主要讲方式,完整代码在其他地方可以看到,我这里只贴出关键代码) 以及里面需要注意的问题
1:完全采用配置(重点介绍)
2:配置+代码configuration
3:完全代码实现
1:完全采用配置整合pagehelper
首先是pom.xml ,加入相应的依赖
<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.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>1.5.1.RELEASEversion>
parent>
<groupId>com.mes.cloudgroupId>
<artifactId>mes-cloud-starterartifactId>
<package>jarpackage>
<properties>
<java.version>1.8java.version>
properties>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Camden.SR5version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.1version>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelperartifactId>
<version>5.1.0version>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelper-spring-boot-autoconfigureartifactId>
<version>1.1.1version>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelper-spring-boot-starterartifactId>
<version>1.2.3version>
dependency>
dependencies>
project>
接着在src/main/resources目录下新建一个application.yml文件
#mybatis配置 第一种和第二种需要 第三种不需要
mybatis:
#mapper.xml文件位置
mapper-locations: classpath*:mapper/*.xml
check-config-location: true
#对应mapper的实体类
type-aliases-package: com.mes.cloud.**.dto
#pagehelper分页配置 第二种和第三种不需要 重点讲的第一种需要
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
下面是启动的入口代码,跟其他的启动没有区别
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* Created by pact on 2018/1/24.
*/
@SpringBootApplication
public class CcsApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(CcsApplication.class);
public static void main(String[] args) throws UnknownHostException {
SpringApplication app = new SpringApplication(CcsApplication.class);
Environment env = app.run(args).getEnvironment();
LOGGER.info("\n----------------------------------------------------------\n\t" +
"Application '{}' is running! Access URLs:\n\t" +
"Local: \t\thttp://localhost:{}\n\t" +
"External: \thttp://{}:{}\n\t" +
"Profile(s): \t{}\n----------------------------------------------------------",
env.getProperty("spring.application.name"),
env.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
env.getProperty("server.port"),
env.getActiveProfiles());
}
}
启动以后就完成pagehelper的整合了:
2:完全代码实现
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;
/**
* Created by pact on 2018/1/24
*/
@Configuration
@ComponentScan
public class MyBatisConfig {
@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;
}
/**
* 第二种方式 在代码中指定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;
}
}
其实整合pagehelper很简单,但是采用第一种方式的时候一定要特别注意依赖jar包的兼容性问题,不然会包很奇怪的问题,第二种和第三种就不存在这个问题。