一、认识 MyBatis PageHelper
A、⽀持多种数据库
B、⽀持多种分⻚⽅式
C、SpringBoot
⽀持(
https://github.com/pagehelper/pagehelper-spring-boot
)
1、
pagehelper-spring-boot-starter
二、代码
pom.xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
application.properies
mybatis.type-handlers-package=geektime.spring.data.mybatisdemo.handler
mybatis.configuration.map-underscore-to-camel-case=true
#页码
pagehelper.offset-as-page-num=true
pagehelper.reasonable=true
pagehelper.page-size-zero=true
pagehelper.support-methods-arguments=true
mapper/CoffeeMapper
package geektime.spring.data.mybatisdemo.mapper;
@Mapper
public interface CoffeeMapper {
//查询所有,rowbounds
@Select("select * from t_coffee order by id")
List<Coffee> findAllWithRowBounds(RowBounds rowBounds);
//查询所有,pageNum和pageSize
@Select("select * from t_coffee order by id")
List<Coffee> findAllWithParam(@Param("pageNum") int pageNum,
@Param("pageSize") int pageSize);
}
schema.sql
create table t_coffee (
id bigint not null auto_increment,
name varchar(255),
price bigint not null,
create_time timestamp,
update_time timestamp,
primary key (id)
);
data.sql
insert into t_coffee (name, price, create_time, update_time) values ('espresso', 2000, now(), now());
insert into t_coffee (name, price, create_time, update_time) values ('latte', 2500, now(), now());
insert into t_coffee (name, price, create_time, update_time) values ('capuccino', 2500, now(), now());
insert into t_coffee (name, price, create_time, update_time) values ('mocha', 3000, now(), now());
insert into t_coffee (name, price, create_time, update_time) values ('macchiato', 3000, now(), now());
主类
package geektime.spring.data.mybatisdemo;
@SpringBootApplication
@Slf4j
@MapperScan("geektime.spring.data.mybatisdemo.mapper")
public class MybatisDemoApplication implements ApplicationRunner {
@Autowired
private CoffeeMapper coffeeMapper;
public static void main(String[] args) {
SpringApplication.run(MybatisDemoApplication.class, args);
}
@Override
public void run(ApplicationArguments args) throws Exception {
coffeeMapper.findAllWithRowBounds(new RowBounds(1, 3))
.forEach(c -> log.info("Page(1) Coffee {}", c));
coffeeMapper.findAllWithRowBounds(new RowBounds(2, 3))
.forEach(c -> log.info("Page(2) Coffee {}", c));
log.info("===================");
coffeeMapper.findAllWithRowBounds(new RowBounds(1, 0))
.forEach(c -> log.info("Page(1) Coffee {}", c));
log.info("===================");
coffeeMapper.findAllWithParam(1, 3)
.forEach(c -> log.info("Page(1) Coffee {}", c));
List<Coffee> list = coffeeMapper.findAllWithParam(2, 3);
PageInfo page = new PageInfo(list);
log.info("PageInfo: {}", page);
}
}
2023-04-23 20:37:12.744 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=1, name=espresso, price=CNY 20.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.745 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=2, name=latte, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.746 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=3, name=capuccino, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.753 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(2) Coffee Coffee(id=4, name=mocha, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.754 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(2) Coffee Coffee(id=5, name=macchiato, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.755 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : ===================
2023-04-23 20:37:12.762 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=1, name=espresso, price=CNY 20.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.763 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=2, name=latte, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.764 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=3, name=capuccino, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.764 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=4, name=mocha, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.765 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=5, name=macchiato, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.765 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : ===================
2023-04-23 20:37:12.855 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=1, name=espresso, price=CNY 20.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.855 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=2, name=latte, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.855 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : Page(1) Coffee Coffee(id=3, name=capuccino, price=CNY 25.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)
2023-04-23 20:37:12.859 INFO 11932 --- [ main] g.s.d.m.MybatisDemoApplication : PageInfo: PageInfo{pageNum=2, pageSize=3, size=2, startRow=4, endRow=5, total=5, pages=2, list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=5, pages=2, reasonable=true, pageSizeZero=true}[Coffee(id=4, name=mocha, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023), Coffee(id=5, name=macchiato, price=CNY 30.00, createTime=Sun Apr 23 20:37:11 CST 2023, updateTime=Sun Apr 23 20:37:11 CST 2023)], prePage=1, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true, hasNextPage=false, navigatePages=8, navigateFirstPage=1, navigateLastPage=2, navigatepageNums=[1, 2]}