github pagehelper/Mybatis-PageHelper v5.0.4
5.0.4 - 2017-08-01

latest releases: v6.1.0, 6.1.0, 6.0.1-snapshot...
6 years ago

中文

  • 增加对 Phoenix 数据库的简单配置支持,配置 helperDialect=phoenix 即可,也可以自动识别 Phoenix 数据库的 jdbc url。
  • count 查询的缓存 msCountMap key 改为 String 类型,key 为 count 查询的 MappedStatement 的 id。
  • 增加 countSuffix count 查询后缀配置参数,该参数是针对 PageInterceptor 配置的,默认值为 _COUNT
  • 增加手写 count 查询支持,详情看下面介绍。

增加手写 count 查询支持

增加 countSuffix count 查询后缀配置参数,该参数是针对 PageInterceptor 配置的,默认值为 _COUNT

分页插件会优先通过当前查询的 msId + countSuffix 查找手写的分页查询。

如果存在就使用手写的 count 查询,如果不存在,仍然使用之前的方式自动创建 count 查询。

例如,如果存在下面两个查询:

<select id="selectLeftjoin" resultType="com.github.pagehelper.model.Country">
    select a.id,b.countryname,a.countrycode from country a
    left join country b on a.id = b.id
    order by a.id
</select>
<select id="selectLeftjoin_COUNT" resultType="Long">
    select count(distinct a.id) from country a
    left join country b on a.id = b.id
</select>

上面的 countSuffix 使用的默认值 _COUNT,分页插件会自动获取到 selectLeftjoin_COUNT 查询,这个查询需要自己保证结果数正确。

返回值的类型必须是resultType="Long",入参使用的和 selectLeftjoin 查询相同的参数,所以在 SQL 中要按照 selectLeftjoin 的入参来使用。

因为 selectLeftjoin_COUNT 方法是自动调用的,所以不需要在接口提供相应的方法,如果需要单独调用,也可以提供。

上面方法执行输出的部分日志如下:

DEBUG [main] - ==>  Preparing: select count(distinct a.id) from country a left join country b on a.id = b.id 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: C1
TRACE [main] - <==        Row: 183
DEBUG [main] - <==      Total: 1
DEBUG [main] - Cache Hit Ratio [com.github.pagehelper.mapper.CountryMapper]: 0.0
DEBUG [main] - ==>  Preparing: select a.id,b.countryname,a.countrycode from country a left join country b on a.id = b.id order by a.id LIMIT 10 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: ID, COUNTRYNAME, COUNTRYCODE
TRACE [main] - <==        Row: 1, Angola, AO
TRACE [main] - <==        Row: 2, Afghanistan, AF
TRACE [main] - <==        Row: 3, Albania, AL

English

  • Add a simple configuration support for the Phoenix database, You can configure helperDialect=phoenix. Can also automatically identify the Phoenix database jdbc url.
  • Simplified cache of msCountMap
  • Add countSuffix count query suffix configuration parameters, this parameter is configured for PageInterceptor, the default value is _COUNT.
  • Add custom count query support, see below for details.

Add custom count query support

Add countSuffix count query suffix configuration parameters, this parameter is configured for PageInterceptor, the default value is _COUNT.

The paging plugin will preferentially find the handwritten paging query by the current query msId + countSuffix.

If there is no custom query, the query is still automatically created using the previous way.

For example, if there are two queries:

<select id="selectLeftjoin" resultType="com.github.pagehelper.model.Country">
    select a.id,b.countryname,a.countrycode from country a
    left join country b on a.id = b.id
    order by a.id
</select>
<select id="selectLeftjoin_COUNT" resultType="Long">
    select count(distinct a.id) from country a
    left join country b on a.id = b.id
</select>

The above countSuffix uses the default value of _COUNT, and the paging plugin will automatically get the query to selectLeftjoin_COUNT. This query needs to ensure that the result is correct.

The value of the return value must be resultType =" Long ", and the same parameter used by selectLeftjoin 'is used, so it is used in SQL to follow the selection of selectLeftjoin'.

Because the selectLeftjoin_COUNT method is invoked automatically, there is no need to provide the appropriate method on the interface, or if it is required to be invoked separately.

The above method to perform the portion of the output log is as follows:

DEBUG [main] - ==>  Preparing: select count(distinct a.id) from country a left join country b on a.id = b.id 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: C1
TRACE [main] - <==        Row: 183
DEBUG [main] - <==      Total: 1
DEBUG [main] - Cache Hit Ratio [com.github.pagehelper.mapper.CountryMapper]: 0.0
DEBUG [main] - ==>  Preparing: select a.id,b.countryname,a.countrycode from country a left join country b on a.id = b.id order by a.id LIMIT 10 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: ID, COUNTRYNAME, COUNTRYCODE
TRACE [main] - <==        Row: 1, Angola, AO
TRACE [main] - <==        Row: 2, Afghanistan, AF
TRACE [main] - <==        Row: 3, Albania, AL

Don't miss a new Mybatis-PageHelper release

NewReleases is sending notifications on new releases.