如何使用PagingAndSorting与MyBatis?

时间:2016-09-27 07:32:48

标签: spring pagination mybatis spring-mybatis

我使用mybatis从数据库中检索数据。但我会使用Pageable对象(来自spring)来获得分页功能。这可能吗?使用PaginationAndSortRepository扩展myMapper仍然足够了吗?

示例:

@Mapper
public interface MyObjetcMapper extends PagingAndSortingRepository {
    List<MyObjetc> findAllMyObjetcs(Pageable pageable);
}

然后我从我的服务中使用它:

List<MyObjetc> myObjetc= myObjetcMapper.findAllCharacteristics(pageable);
return new PageImpl<>(characteristics, new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), pageable.getSort()), MyObjetc.size());

问题是所以我将返回所有MyObjects而不仅仅是请求的集合.... 我每次都要提取感兴趣的清单吗?

2 个答案:

答案 0 :(得分:1)

几周前我正在搜索同样的东西,似乎这是不可能的。 对于我发现你必须使用RowBound参数

实现自己的paginator
  

(RowBounds参数导致MyBatis跳过指定的记录数,并限制返回到某个数字的结果数)

如本答案所述 我相信你已经红了How to do Pagination with mybatis?

使用PaginationAndSorting扩展您的映射器将无法正常工作。

This project on github 似乎做你正在搜索但我没有尝试它没有评论,所以我不知道它是否可靠,可以用作解决方案。

答案 1 :(得分:0)

我一直在使用Mybatis-PageHelper插件对Sql Server进行分页

支持的数据库:

  • 甲骨文
  • MySQL的/ MariaDB的
  • SQLite的
  • HSQLDB
  • 的PostgreSQL
  • DB2
  • SqlServer(2005年至2016年)
  • 的Informix
  • H2

maven宣言

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

在mybatis-config.xml中将其指定为插件

<plugins>
    <plugin interceptor="com.github.pagehelper.PageHelper">
    </plugin>
</plugins>

用法示例:

// Get the results for page 1 where every page has 10 rows
PageHelper.startPage(1, 10);

List<MyObjetc> myObjetc= myObjetcMapper.findAllCharacteristics();

assertEquals(10, list.size());