MyBatis-plus的IPage分页

单表的查询并根据时间分页

1、yml或者properties中配数据源,配自己的数据库就好。

mybatis-plus:
  mapper-locations: ../mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  //这个是为了在控制台打印SQL语句。

2、导入Mybatis-Plus的依赖,我这里使用的是3.4.0的版本,这里一定要注意依赖的版本号,3.4.0以后,分页插件的配置进行了更新。这里强调一下,如果自带分页插件失效,先检查版本和配置。

        <!--MyBatis-plus配置-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

3、新建一个config,这个config写Mybatis-Plus的插件配置,MP的插件配置有很多,这里单说一下分页的配置。

/**
 *    注意@MapperScan,使用springboot的话,启动类是要扫描数据层的,如果仅用的是MP对数据    
 *    库操作,启动类里面的@MapperScan是不用写的,只写这里就好。
 *
 */

@Configuration
@MapperScan("com.tiktang.dao")
public class MybatisPlusConfig {
    /**
     * IPage的分页使用的是拦截器,属于物理分页,好处就是处理大量数据时,查询速度快。
     *    有兴趣的同学可以看看什么是物理分页和逻辑分页。
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //向Mybatis过滤器链中添加分页拦截器
        interceptor.addInnerInterceptor(new            
                     PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

4、单表的实体类entity对象,自己数据库中的字段,此步进行了省略。

5、程序的步骤,我一般习惯先写Mapper.xml,Mapper,service,serviceImpl,controller。按这个步骤来说,首先要先写的是Mapper.xml,但是是单表操作,又是用MP框架,就不用再写Mapper.xml了。

6、Mapper

//News为实体类
@Repository
public interface NewsMapper extends BaseMapper<News> {

}

7、service

//News为实体,page为当前页,pageSize是一页多少个
public interface NewsService {

    IPage<News> queryNewsList(Integer page, Integer pageSize);
}

8、serviceImpl

@Service
public class NewsServiceImpl implements NewsService {
    
    @Autowired
    private NewsMapper newsMapper;

    @Override
    public IPage<News> queryNewsList(Integer page, Integer pageSize) {
//      Page<News> page1 = new Page<>(page,pageSize);
        //这里进行了时间排序
        QueryWrapper<News> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("news_time");
        //MP自带的selectPage方法,有兴趣的同学,可以看一下源码
        IPage<News> iPage = newsMapper.selectPage(new Page<>(page, pageSize), 
        queryWrapper);
        return iPage;
    }

}

9、controller

    @GetMapping("/newsList")
    public Result<News> queryNewsList(@RequestParam Integer page,
                                    @RequestParam Integer pageSize){
        IPage<News> iPage = newsService.queryNewsList(page, pageSize);
        return Result.ok().data("iPage",iPage);
    }

Result是我自己封装的结果集,有时间会再写一下关于返回统一结果集的内容。

到此单表查询分页并根据时间排序就完成。

2⃣️:

    @GetMapping("/getCompanyInvest")
    public Result getCompanyInvest(@RequestParam String companyId,
                                   @RequestParam Integer currentPage,
                                   @RequestParam Integer pageNumber){
        QueryWrapper<CompanyInvest> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("company_id",companyId);
        Page<CompanyInvest> page = new Page<>(currentPage,pageNumber);
        IPage<CompanyInvest> companyInvestIPage = companyInvestMapper.selectPage(page,queryWrapper);
        Map<String,Object> map = new HashMap<>();
        map.put("公司投资信息的子页面",companyInvestIPage);
        return Result.ok().data(map);
    }

  • 11
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值