happyCode(6) PageHelper使用前写法和使用后写法

一、手写Limit,手动使用泛型封装PageInfo

Controller

@RequestMapping("/queryAllLimit")
    @ResponseBody
    public List<Test> queryAllLimit(Integer pageSize,Integer pageNo) {
        return testService.queryForList(pageSize,pageNo);
    }

Service

public List<Test> queryLimit(Integer pageSize,Integer pageNo) {
        return testMapper.selectLimit(pageSize, pageNo);
    }

dao

@SelectProvider(type=TestSqlProvider.class,method="selectLimit")
    public List<Test> selectLimit(Integer pageSize,Integer pageNo);

SqlProvider

package com.oo.test.dao;

import org.apache.ibatis.jdbc.SQL;

import com.oo.test.entity.Test;

public class TestSqlProvider {
	public String selectSearch(final Test test) {
		return new SQL(){{
           SELECT("id,content,version");
           FROM("test");
           if(test.getId()!=null) {
        	  WHERE("id = #{id}");
           }
           if(test.getContent() != null){
              WHERE("content like '%${name}%'");
           }
           if(test.getVersion() != null){
              WHERE("version = #{version}");
           }
       }}.toString();
	}
	public String selectLimit(Integer pageSize,Integer pageNo) {
		return new SQL() {{
			SELECT("id,content,version");
	           FROM("test limit "+(pageNo-1)*10+","+pageSize);
		}}.toString();
	}
}	

二、PageHelper的使用

1.添加依赖

 <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
    </dependency>

2.添加配置

package com.oo.config;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.ibatis.plugin.Interceptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import com.github.pagehelper.PageInterceptor;

@Configuration
public class PageHelperConfig {
	@Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        Properties properties = new Properties();
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("pageSizeZero", "true");
        PageInterceptor interceptor = new PageInterceptor();
        interceptor.setProperties(properties);
        sqlSessionFactoryBean.setPlugins(new Interceptor[]{interceptor});
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*Mapper.xml"));
        return sqlSessionFactoryBean;
    }
}

3.应用 PageInfo PageHelper.startPage pageNo 第几页,pageSize分页规则,每页最多数据条数

@Autowired
	TestMapper testMapper;
	public List<Test> queryForList(Integer pageSize,Integer pageNo) {
		if(pageSize!=null&&pageNo!=null) { 
			PageHelper.startPage(pageNo,pageSize);
		}
		return testMapper.selectAll();
	}

        List<Test> queryForList = testService.queryForList(pageSize,pageNo);
        PageInfo<Test> pageInfo = new PageInfo<Test>(queryForList);//PageInfo分页信息,当前页,总数据条数,每页数据条数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值