mybatis-plus自定义分页实现 (精)

添加pom依赖

 <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.4.3</version>
</dependency>
<dependency>
           <groupId>com.github.pagehelper</groupId>
           <artifactId>pagehelper-spring-boot-starter</artifactId>
           <version>1.3.1</version>
 </dependency>
 <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>3.1</version>
</dependency>

注意: 版本一定要匹配,高配高,低配低

MybatisPlusConfig

import com.baomidou.mybatisplus.annotation.DbType;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
@Configuration
@MapperScan("com.nari.slsd.msrv.sl.main.mapper")
@ConditionalOnClass(value = {MybatisPlusInterceptor.class})
@Slf4j
public class MybatisPlusConfig {

    private const String dataType = "oracle";
    /**
     * 分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        log.info("开始执行mybatis-plus拦截器,{}",dataType);
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.getDbType(dataType)));
        return interceptor;
    }
}

dataType 根据需要修改数据源

Controller

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public class DemoManageController  {
   @Autowired
    private DemoServiceImpl demoServiceImpl;

    @PostMapping("/getData")
    public IPage<DemoVO> getData(@RequestParam("fetchParam") FetchParam[] fetchParam, @RequestParam("PageNo") int PageNo, @RequestParam("PageSize") int PageSize){
        Page<DemoVO> page = new Page<>(PageNo, PageSize);
        IPage<DemoVO> specialData = demoServiceImpl.getSpecialData(page,fetchParam);
        return specialData;
    }
 }

fetchParam 为查询限制参数,PageNo当前页,PageNum显示条数
page 和 Ipage 对象来源包一定要按照上面要求写

Service & ServiceImpl

Service

public interface DemoManageService extends IService<DemoVO> {
   IPage<DemoVO> getSpecialData( Page<DemoVO> page,FetchParam[] fetchParams);
}

ServiceImpl

@Service
@Slf4j
public class DemoServiceImpl extends ServiceImpl<DemoManageMapper,DemoVO>  implements DemoManageService {

    @Autowired
    private DemoManageMapper demoManageMapper;

    @Override
    public IPage<DemoVO> getSpecialData(Page<DemoVO> page,FetchParam[] fetchParams) {
        return demoManageMapper.querySpecialPage(page,fetchParams);
        }
}        

Mapper

@Mapper
public interface DemoManageMapper extends BaseMapper<DemoVO> {
   IPage<DemoVO> querySpecialPage(@Param("page") Page<DemoVO> page, @Param("fetchParam") FetchParam[] fetchParam);
}

Sql语句

<select id="querySpecialPage" resultType="com.nari.slsd.msrv.sl.main.model.vo.DemoVO" >
        select <include refid="baseQueryParams"/> from YEARDB
        order by senid asc
 </select>

运行

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值