优雅编程(三)——MybatisPageHelper

优雅编程(三)——MybatisPageHelper

如果你也在用 MyBatis,建议尝试该分页插件,该插件支持很多复杂的单表、多表物理分页。

  • 支持常见的12中数据库(MySQL、Oracle、SqlServer。。。)

  • 支持常见的RowBounds(PageRowBounds)、PageHelper.startPage 方法调用、Mapper 接口参数调用

  • 使用 QueryInterceptor 规范

    详情查看PH官网:https://pagehelper.github.io/

PageHelper插件功能直接明了,就是简化开发中的分页操作,直接上手学习一下。

百度上SSM项目引入PageHelper的解决方法已经很多了,主要学习一下SpringBoot引入的方法,首先引入Pom依赖:

<!--https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>

甚至可以不进行任何PageHelper的配置即可使用,粘出演示应用的配置:

#pageHelper
#pagehelper.helper-dialect=mysql
#pagehelper.reasonable=true
#pagehelper.support-methods-arguments=true
#pagehelper.params=count=countSql
#Mybatis
mybatis.type-aliases-package=com.example.testpagehelper.edu.li.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123

logging.level.com.example.testpagehelper.edu.li.dao=debug

因为演示应用比较简单,所以直接使用mybatis-generator生成了持久层代码(pojo、mapper、mapper.xml),如果还没用过mybatis-generator这一利器的话,可以看一下上一篇博文——优雅编程(二)

完成了上述操作,即可开始使用了:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;
    
    public List<User> selectAllUsers() {
        //使用静态方法startPage方法即可开启分页操作,自动将后面的查询进行分页操作
        PageHelper.startPage(1,7);
        //直接使用自动生成的mapper接口方法
        return userMapper.selectByExample(null);
    }
}

编写controller方法后,验证一下分页结果:

@RestController
public class UserController {
    @Autowired
    UserService userService;

    @RequestMapping("/users")
    public List<User> selectAllUsers(){
        return userService.selectAllUsers();
    }
}

可以看到请求结果只有7条:

MHIcWj.md.png

观察控制台上的日志发现,先进行了一次查数据量sql,再进行了使用limit分页查询sql,逻辑比较简单清晰:

MHIyFg.md.png


PageHelper的使用看起来还是非常简单的,但是其中的坑也有很多。因为博主也是初次使用的菜鸟,所以只能等待后续学习中慢慢踩坑记录。本博文撰写时的应用演示蹭了SpringBoot的光,使用的是基于SpringBoot版本的PageHelper,如果使用了其他非SpringBoot版本的PageHelper依赖,可能需要对PageHelper进行Bean注入,下面是实现Bean注入的代码:

@Configuration
public class MyabatisConfig {
    @Bean
    public PageHelper pageHelper(){
        System.out.println("PageHelper 注入容器。。。");
        PageHelper pageHelper=new PageHelper();
        Properties properties=new Properties();
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值