一、mybatis的分页
public interface IBookService {
PageInfo<Book> findAllBooks(int offset, int limit);
}
@Service
public class BookService implements IBookService {
@Resource
private BookMapper bookMapper;
@Override
public PageInfo<Book> findAllBooks(int pageNum, int pageSize) {
//创建分页语句
PageHelper.startPage(pageNum, pageSize );
//得到分页对象:参数是查询所有(注入上面的分页查询参数)
PageInfo<Book> pageInfo = new PageInfo<>(this.bookMapper.findAllBooks());
return pageInfo;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tonysong.mybatispage.mapper.BookMapper">
<select id="findAllBooks" resultType="entity.Book">
select * from t_book
<where>
<if ...>
...
</if>
<if>
...
</if>
</where>
</select>
</mapper>
二、Mp的分页
@Configuration
@MapperScan("com.example.mppage.mapper")
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
//乐观锁
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//防止全表更新
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor;
}
}
@SpringBootTest
class MpPageApplicationTests {
@Resource
private BookService bookService;
@Test
void contextLoads() {
Page<Book> bookPage = new Page<>(1, 3);
Page<Book> page = this.bookService.page(bookPage);
System.out.println(page.getTotal());
page.getRecords().forEach(System.out::println);
}
@Test
void test1(){
Page<Book> bookPage = new Page<>(1, 3);
//条件查询
QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().like(Book::getAuthor,"")
.like(Book::getTitle,"%a");
Page<Book> page =this.bookService.page(bookPage,queryWrapper);
System.out.println(page.getTotal());
page.getRecords().forEach(System.out::println);
}
}
三、JPA的分页
public interface BookDao extends JpaRepository<Book,Integer> {
Page<Book> findBooksByAuthorContaining(Pageable pageable,String authorContaining);
}
@SpringBootTest
class JpaPageApplicationTests {
@Resource
private BookDao bookDao;
@Test
void contextLoads() {
Page<Book> page = this.bookDao.findBooksByAuthorContaining(PageRequest.of(0, 4), "的");
System.out.println(page.getTotalElements());//总记录数
page.getContent().forEach(book ->{
System.out.println(book);
});
}