首页 > 其他分享 >mybatis-plus和pageHelper使用

mybatis-plus和pageHelper使用

时间:2024-04-16 14:35:41浏览次数:17  
标签:queryWrapper 插件 分页 pageHelper plus mybatis new pageVo

1、依赖

 <!-- mybatis-plus依赖 -->
  <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.5.3.1</version>
 </dependency>
 <!-- 分页插件pageHelper -->
  <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper</artifactId>
     <version>5.3.1</version>
  </dependency>

2、插件配置

/**
 * 分页插件配置,不配置的话分页效果不起效
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * MybatisPlus分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return mybatisPlusInterceptor;
    }
    

    /**
     * PageHelper分页插件
     * */
    @Bean
    PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}

3、使用注意

3.1 mybatis-plus 通常查单表分页

   /**
     * 获取热门文章
     */
    @Override
    public Result<PageVo> getHotArticleList() {
        // 设置条件
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Article::getStatus, '0');
        // 按照浏览量降序排序
        queryWrapper.orderByDesc(Article::getViewCount);
        // 查询5条数据
        Page<Article> pageList = new Page<>(1, 5);
        // 执行
        baseMapper.selectPage(pageList, queryWrapper);
        // 拷贝数据
        List<ArticlePageVo> hotArticleList = pageList.getRecords()
                .stream()
                .map(article -> BeanUtil.copyProperties(article, ArticlePageVo.class))
                .collect(Collectors.toList());
        PageVo pageVo = new PageVo(hotArticleList, pageList.getTotal());
        return Result.success(pageVo);
    }

3.2 pageHelper 单表和多表分页都可以

   /**
     * 获取前台文章分页列表
     */
    @Override
    public Result<PageVo> getFrontArticleList(Integer pageNum, Integer pageSize) {
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Article::getStatus, '0');
        // 查询文章条数
        Long total = baseMapper.selectCount(queryWrapper);
        // 开启分页
        PageHelper.startPage(pageNum, pageSize);
        // 执行查询
        List<ArticleFrontVo> articleFrontVos = baseMapper.selectFrontArticleWithDetails();
        PageInfo<ArticleFrontVo> pageInfo = new PageInfo<>(articleFrontVos);
        // 返回数据
        PageVo pageVo = new PageVo(pageInfo.getList(), total);
        return Result.success(pageVo);
    }

3.3 注意

1、Myabtis-plus分页查询正常写就可以。

2、Pagehelper分页查询时
在 PageHelper.startPage(pageNum, pageSize);和PageInfo<ArticleFrontVo> pageInfo = new PageInfo<>(articleFrontVos);
中只能执行一句SQL语句,否则会出现分页异常情况。

遇到了一个大坑,在xml文件中写SQL不要在语句后面加上 ;结束符号了。
如何加上后使用pageHelper分页操作Limit语句会直接加在 ;这个符号后面导致SQL语句错误。

标签:queryWrapper,插件,分页,pageHelper,plus,mybatis,new,pageVo
From: https://www.cnblogs.com/huxiaoan1/p/18137999

相关文章

  • Mybatis-Plus 使用IPage分页失效问题处理
    问题在mybatis-plus中使用IPage作为分页功能实现,请求发现并没有实现分页功能。部分代码##controller@PostMapping("/getCollege")@ApiOperation("查询学院信息")publicCommonResult<IPage<ZgdCollegeVo>>getCollege(@RequestBodyZgdCollegeBozgdColle......
  • IntelliJ IDEA2021.3.1 使用 MybatisCodeHelperPro插件
    摘自:https://blog.csdn.net/weixin_44321065/article/details/132576008一、下载下载破解后的MybatisCodeHelperPro的V3.2.2版本V3.2.2-CSDN或者V3.2.2-Gitee二、应用将下载下来的Zip文件放到电脑上的某个位置(最好放在Idea管理插件的plugins下)然后自行搜索Idea......
  • mybatis一级缓存
    一级缓存默认:mybatis默认开启一级缓存,且local-cache-scope默认session级别,默认关闭二级缓存配置如下:mybatis关闭二级缓存,一级缓存作用范围为session;查询语句也没有使用flushCache=“true”(默认false)==>所以使用了缓存,但是这样直接操作缓存对象,下一次查询出来的是被修改后的......
  • Mybatis.xml中何时需要写ResultMap映射,什么时候需要给字段设置别名呢
    日常开发中,我们需要在mybatis.xml文件中,将数据库的查询结果映射到实体类中,那何时需要给字段起别名,何时不需要呢?总是不太清晰,接下来梳理记录一下。 至于一般什么时候,使用resultMap,一版什么时候使用别名呢,如果实体的每个字段都和数据库中的字段名称是不一样的,那一般就采用的是R......
  • Mybatis中ResultMap的嵌套查询
    要点:多对一:查询的多个对象中有一个属性包含一个复杂对象,使用association标签嵌套一对多:查询的单个对象中的一个属性包含多个其他对象,使用collection标签嵌套javaType为实体类中属性的类型,为常用基本数据类型时可以省略ofType则是用来指定到List或集合中的实体类类型,泛型中的......
  • 在MyBatis中,可以使用以下动态SQL标签来编写灵活的SQL语句
    一、<if>:条件判断标签,用于在SQL语句中添加条件判断。通过判断给定的条件是否成立,决定是否包含相应的SQL片段。示例:<selectid="getUserList"resultType="User">SELECT*FROMuser<where><iftest="username!=null">ANDusername=#{userna......
  • java: 无法访问org.mybatis.spring.annotation.MapperScan、类文件具有错误的版本 61.
    使用的Mybatis-spring依赖的版本3.0.1太高,将版本改为2.2.2<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><depende......
  • 通过__cplusplus查看c++版本并检查gcc支持版本
    虽然平时开发都是用的c++11标准,但打算看一下wslubuntu里面的gcc默认支持什么标准~1打印__cplusplus宏#include<cstdio>intmain(){printf("%ld\n",__cplusplus);}➜testg++test_cpp_version.cpp-otest_cpp_version➜test./test_cpp_version20......
  • mybatis怎么实现insert into多个数据-oracle数据库
    第一种<insertid="insertBatch"> INSERTALL <foreachcollection="list"item="user"separator=""close="SELECT*FROMdual"index="index"> INTOLY_TEST(id,name,age)VALUES(#{user......
  • MyBatis动态SQL
    MyBatis动态SQL动态SQL简介动态SQL是MyBatis的强大特性之一。如果你使用过JDBC或其它类似的框架,你应该能理解根据不同条件拼接SQL语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态SQL,可以彻底摆脱这种痛苦。使用动态......