SpringBoot集成PageHelper实现分页

1、修改的pom.xml的文件,增加PageHelper

<!--分页PageHelper -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.3</version>
</dependency>

2、修改DruidDataSourceConfig.java文件,加入分页功能(我是写在代码中的,你可以采用配置文件的形式)

/**
 * 配置分页
 */
@Bean
public Interceptor pageHelper() {
	Interceptor interceptor = new PageInterceptor();
	Properties properties = new Properties();
	properties.setProperty("helperDialect", "mysql");
	properties.setProperty("offsetAsPageNum", "true");
	properties.setProperty("rowBoundsWithCount", "true");
	properties.setProperty("reasonable", "false");
	interceptor.setProperties(properties);
	return interceptor;
}

 整体代码内容如下:

package com.example.demo.common.config;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.github.pagehelper.PageInterceptor;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

/**
 * 
 * @ClassName: DruidDataSourceConfig
 * @Description: TODO(多数据源切换)
 * @author willdas
 * @date 2018年9月11日 下午2:50:12
 *
 */
@Configuration
@MapperScan(basePackages = "com.example.demo.*.dao", sqlSessionFactoryRef = "sqlSessionFactory")
public class DruidDataSourceConfig {

	/**
	 * 配置别名
	 */
	@Value("${mybatis.type-aliases-package}")
	private String typeAliasesPackage;

	/**
	 * 配置mapper的扫描,找到所有的mapper.xml映射文件
	 */
	@Value("${mybatis.mapper-locations}")
	private String mapperLocations;

	/**
	 * 加载全局的配置文件
	 */
	@Value("${mybatis.config-location}")
	private String configLocation;

	/**
	 * 数据源1
	 */
	@Bean(name = "oneDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.one")
	public DataSource dataSourceOne() {
		return DruidDataSourceBuilder.create().build();
	}

	/**
	 * 数据源2
	 */
	@Bean(name = "twoDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.two")
	public DataSource dataSourceTwo() {
		return DruidDataSourceBuilder.create().build();
	}

	/**
	 * 数据源管理
	 */
	@Bean
	public DataSource dynamicDataSource() throws SQLException {
		DynamicDataSource dynmicDataSource = new DynamicDataSource();
		Map<Object, Object> targetDataSources = new HashMap<>();
		targetDataSources.put("oneDataSource", dataSourceOne());
		targetDataSources.put("twoDataSource", dataSourceTwo());
		dynmicDataSource.setTargetDataSources(targetDataSources);
		dynmicDataSource.setDefaultTargetDataSource(dataSourceOne()); // 设置默认数据源
		return dynmicDataSource;
	}

	/**
	 * SqlSessionFactory
	 */
	@Bean
	public SqlSessionFactory sqlSessionFactory(@Qualifier("dynamicDataSource") DataSource dataSource) throws Exception {
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
		sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
		sqlSessionFactoryBean.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
		sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageHelper()});
		return sqlSessionFactoryBean.getObject();
	}

	/**
	 * 事物
	 */
	@Bean
	public PlatformTransactionManager transactionManager(@Qualifier("dynamicDataSource") DataSource dataSource) {
		return new DataSourceTransactionManager(dataSource);
	}

	/**
	 * 配置分页
	 */
	@Bean
	public Interceptor pageHelper() {
		Interceptor interceptor = new PageInterceptor();
		Properties properties = new Properties();
		properties.setProperty("helperDialect", "mysql");
		properties.setProperty("offsetAsPageNum", "true");
		properties.setProperty("rowBoundsWithCount", "true");
		properties.setProperty("reasonable", "false");
		interceptor.setProperties(properties);
		return interceptor;
	}

}

3、修改StudentMapper.xml文件,编写查询所有信息的方法

<!-- 查询所有学生-->
<select id="selectAll" resultMap="BaseResultMap">
	select <include refid="Base_Column_List" />
	from student where 1 = 1
</select>

4、修改StudentService.java文件,新增分页方法

/**
 * 
 * @Title: getPage   
 * @Description: TODO(分页查询)   
 * @param: @param userId
 * @param: @param page
 * @param: @param row
 * @param: @return      
 * @return: PageInfo<Student>      
 * @throws
 */
public PageInfo<Student> getPage(Integer pageNum, Integer pageSize);

5、修改StudentServiceImpl.java文件,实现上述方法

/**
 * 查询所有学生
 */
@Override
public List<Student> selectAll() {
	return studentMapper.selectAll();	
}

/**
 * 分页查询
 */
@Override
public PageInfo<Student> getPage(Integer pageNum, Integer pageSize) {
	PageHelper.startPage(pageNum, pageSize);
	List<Student> lists = selectAll();
	PageInfo<Student> pageInfo = new PageInfo<>(lists);
	return pageInfo;
}

6、封装一个结果集Bean

/**
 * 
 * @ClassName: ResultBean
 * @Description:TODO(封装结果集)
 * @author: willdas
 * @date: 2018年11月2日 下午5:03:49
 * 
 * @param <T>
 */
public class ResultBean<T> {

	private Boolean success;

	private T data;
	
	public ResultBean(Boolean success) {
		super();
		this.success = success;
	}

	public ResultBean(Boolean success, T data) {
		super();
		this.success = success;
		this.data = data;
	}

	public Boolean isSuccess() {
		return success;
	}

	public void setSuccess(Boolean success) {
		this.success = success;
	}

	public T getData() {
		return data;
	}

	public void setData(T data) {
		this.data = data;
	}

}

7、修改StudentController.java,新增分页方法

/**
 * 
 * @Title: getPage   
 * @Description: TODO(分页查询)   
 * @param: @param pageNum
 * @param: @param pageSize
 * @param: @return      
 * @return: ResultBean<PageInfo<Student>>      
 * @throws
 */
@GetMapping("getPage")
public ResultBean<PageInfo<Student>> getPage(Integer pageNum,Integer pageSize){
	ResultBean<PageInfo<Student>> resultBean = null;
	PageInfo<Student> pages = studentService.getPage(pageNum, pageSize);
	if (pages.getList().size() != 0) {
		resultBean = new ResultBean<>(true, pages);
	}else{
		resultBean = new ResultBean<>(false, pages);
	}
	return resultBean;
}

8、修改启动类DemoApplication.java

@EnableTransactionManagement   //开启事务支持
@SpringBootApplication(exclude = PageHelperAutoConfiguration.class)
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

9、项目整体目录

10、先Maven clean,然后Maven install,最后右键DemoApplication.java,Run As启动程序

11、打开Postman,开始测试,分页查询:http//127.0.0.1/student/getPage? pageNum = 1&pageSize = 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值