1
- ##更新日志
2
-
3
- ##4 .2.1 - 2016-12-11
1
+ ## 更新日志
2
+
3
+ ### 5.0.0 - 2017-01-02
4
+
5
+ - 使用 [ QueryInterceptor 规范] ( https://github.com/pagehelper/Mybatis-PageHelper/blob/master/src/main/java/com/github/pagehelper/QueryInterceptor.java ) 处理分页逻辑
6
+ - 新的分页插件拦截器为 ` com.github.pagehelper.PageInterceptor `
7
+ - 新的 ` PageHelper ` 是一个特殊的 ` Dialect ` 实现类,以更友好的方式实现了以前的功能
8
+ - 新的分页插件仅有 ` dialect ` 一个参数,默认的 ` dialect ` 实现类为 ` PageHelper `
9
+ - ` PageHelper ` 仍然支持以前提供的参数,在最新的使用文档中已经全部更新
10
+ - ` PageHelper ` 的 ` helperDialect ` 参数和以前的 ` dialect ` 功能一样,具体可以看文档的参数说明
11
+ - 增加了基于纯 ` RowBounds ` 和 ` PageRowBounds ` 的分页实现,在 ` com.github.pagehelper.dialect.rowbounds ` 包中,这是用于作为 ` dialect ` 参数示例的实现,后面会补充更详细的文档
12
+ - 去掉了不适合出现在分页插件中的 orderby 功能,以后会提供单独的排序插件
13
+ - 去掉了 ` PageHelper ` 中不常用的方法
14
+ - 新的文档,更新历来更新日志中提到的重要内容,提供英文版本文档
15
+ - 解决 bug [ #149 ] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/149 )
16
+ - 将 Db2RowDialect 改为 Db2RowBoundsDialect
17
+ - 所有分页插件抛出的异常改为 PageException
18
+
19
+ ### 4.2.1 - 2016-12-11
4
20
5
21
- 解决` SimpleCache ` 类遗留问题导致的错误 [ #143 ] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/143 ) fix by [ dhhua] ( https://github.com/dhhua )
6
22
7
- ###4 .2.0 - 2016-12-09
23
+ ### 4.2.0 - 2016-12-09
8
24
9
25
- 使用新的方式进行分页,4.2版本是从5.0版本分离出来的一个特殊版本,这个版本兼容4.x的所有功能,5.0版本时为了简化分页逻辑,会去掉部分功能,所以4.2是4.x的最后一个版本。
10
26
- 支持 MyBatis 3.1.0+ 版本
19
35
- 解决#135 ,增加/* keep orderby* /注解,SQL中包含该注释时,count查询时不会移出order by
20
36
- sqlserver没有orderby时,使用` order by rand() ` #82 #118
21
37
22
- ###4 .1.6 - 2016-06-05
38
+ ### 4.1.6 - 2016-06-05
23
39
24
40
- 通过间接处理字符串解决SqlServer中不支持` with(nolock) ` 的问题#86 ,详情可以看` SqlServerParser ` 和` SqlServer2012Dialect `
25
41
26
- ###4 .1.5 - 2016-05-29
42
+ ### 4.1.5 - 2016-05-29
27
43
28
44
- 更新` PageProviderSqlSource ` ,支持3.4.0版本的` Provider ` 注解方式的分页#102
29
45
- 解决` SqlUtil ` 未初始化` PARAMS ` 属性导致的错误
30
46
31
- ###4 .1.4 - 2016-05-12
47
+ ### 4.1.4 - 2016-05-12
32
48
33
49
- 解决` closeConn ` 未设置时,默认值被覆盖变成` false ` 的问题#97
34
50
- ` closeConn ` 不只对动态数据源有效,当没有设置` dialect ` 属性自动获取数据库类型的时候同样有效
35
51
- 解决关闭tomcat的时候提示线程安全问题#98 ,这个问题不会导致内存溢出,已经增加处理
36
52
37
- ###4 .1.3 - 2016-03-31
53
+ ### 4.1.3 - 2016-03-31
38
54
39
55
- 解决反射类没有完全捕获异常的问题#94
40
56
- 把SqlServer类所有private都改成了protected,方便继承修改#93
41
57
42
- ###4 .1.2 - 2016-03-06
58
+ ### 4.1.2 - 2016-03-06
43
59
44
60
- 增加可配参数` closeConn ` ,当使用动态数据源时,分页插件获取jdbcUrl后,控制是否关闭当前连接,默认` true ` 关闭
45
61
- count查询改为` count(0) ` ,分库分表情况下的效率可能更高
46
62
47
- ###4 .1.1 - 2016-01-05:
63
+ ### 4.1.1 - 2016-01-05:
48
64
49
65
- 解决动态数据源时获取连接后未关闭的严重bug#80
50
66
- 解决动态数据源时SqlSource和parser绑定导致不能切换方言的问题
51
67
52
- ###4 .1.0 - 2015-12-30:
68
+ ### 4.1.0 - 2015-12-30:
53
69
54
70
- 增加` autoRuntimeDialect ` 参数,允许在运行时根据多数据源自动识别对应方言的分页(暂时不支持自动选择` sqlserver2012 ` ,只能使用` sqlserver ` )。
55
71
- 去掉了4.0.3版本增加的` returnPageInfo ` 参数,接口返回值不支持` PageInfo ` 类型,可以使用下面` ISelect ` 中演示的方法获取
56
72
- 增加对` SqlServer2012 ` 的支持,需要手动指定` dialect=sqlserver2012 ` ,否则会使用2005的方式进行分页
57
73
- jsqlparser升级到0.9.4版本,使用jar包时必须用最新的0.9.4版本,使用Maven会自动依赖0.9.4
58
74
- 增加` ISelect ` 接口,方便调用,使用方法可以参考` src/test/java/com.github.pagehelper.test.basic.TestISelect ` 测试。
59
75
60
- ###使用该接口可以参考如下用法(返回值为` Page ` 或` PageInfo ` ):
76
+ ### 使用该接口可以参考如下用法(返回值为` Page ` 或` PageInfo ` ):
61
77
62
78
``` java
63
79
// jdk6,7用法,创建接口
@@ -93,13 +109,13 @@ long total = PageHelper.count(new ISelect() {
93
109
total = PageHelper . count(()- > countryMapper. selectLike(country));
94
110
```
95
111
96
- ###4 .0.3 - 2015-11-09:
112
+ ### 4.0.3 - 2015-11-09:
97
113
98
114
- ` PageHelper ` 新增3个` offsetPage ` 方法,参数主要是` offset ` 和` limit ` ,允许不规则分页
99
115
100
116
- 新增两个可配参数` supportMethodsArguments ` 和` returnPageInfo ` (该参数在4.1.0版本去掉),具体含义和用法请看[ 如何使用分页插件] ( https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md ) 中的参数介绍
101
117
102
- ###4 .0.2 - 2015-11-02
118
+ ### 4.0.2 - 2015-11-02
103
119
104
120
- 简化` Page<E> ` 类,包含排序条件` orderBy `
105
121
@@ -113,13 +129,13 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
113
129
114
130
- 该版本调整比较大,但对开发人员影响较小,为以后扩展和完善提供方便
115
131
116
- ###4 .0.1 -2015-09-10
132
+ ### 4.0.1 -2015-09-10
117
133
118
134
- 解决[ #60 -使用RPC时,因Page类引用了RowBounds,导致反序列化失败] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/60 ) by [ 马金凯] ( http://git.oschina.net/mxb )
119
135
120
136
- 这个改动主要是去掉了` Page<E> ` 构造方法中的` RowBounds ` ,用` int[] ` 数组替换了` RowBounds `
121
137
122
- ###4 .0.0 - 2015-07-13
138
+ ### 4.0.0 - 2015-07-13
123
139
124
140
- 配置属性` dialect ` 不在强制要求,可以不写,分页插件会自动判断
125
141
@@ -135,19 +151,19 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
135
151
136
152
- 修改分页查询的处理逻辑,主要是将原` sqlSource ` 包装成可以分页和排序的` sqlSource `
137
153
138
- ###3 .7.5 - 2015-06-12
154
+ ### 3.7.5 - 2015-06-12
139
155
140
156
- 增加对MyBatis3.2.0以上版本的校验,如果是不是3.2.0以上版本,会抛出异常提示
141
157
142
158
- 解决3.7.1更新中实际没有解决的入参为不可变` Map ` 类型时的错误
143
159
144
- ###3 .7.4 - 2015-05-26
160
+ ### 3.7.4 - 2015-05-26
145
161
146
162
- 为了支持` 3.3.0 ` 去掉了分页插件自带的` SytemObjectMetaObject ` 类(该类在早期版本为了支持3.2.0以前的MyBatis)
147
163
148
164
- 最新支持MyBatis - 3.2.0到最新3.3.0版本
149
165
150
- ###3 .7.3 - 2015-05-22
166
+ ### 3.7.3 - 2015-05-22
151
167
152
168
- ` Page ` 继承的` ArrayList ` ,会根据` pageSize ` 初始化大小,这就导致当` pageSize ` 过大(如` Integer.MAX_VALUE ` ),实际数据量很小时的内存溢出,此处改为初始化大小为0的` List ` 。
153
169
@@ -157,16 +173,16 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
157
173
158
174
- 针对` RowBounds(0, Integer.MAX_VALUE) ` 优化,会取消分页,直接查询全部数据(能起到` pageSizeZero ` 参数所起的作用)。
159
175
160
- ###3 .7.2 - 2015-05-13
176
+ ### 3.7.2 - 2015-05-13
161
177
162
178
- jsqlparser解析sql会抛出Error异常,由于只捕获Exception,所以导致部分解析失败的sql无法使用嵌套方式处理,所以修改为捕获` Throwable ` 。
163
179
164
- ###3 .7.1 - 2015-05-05
180
+ ### 3.7.1 - 2015-05-05
165
181
166
182
- 增加` Infomix ` 数据库支持,设置` dialect ` 值为` infomix ` 即可
167
183
- 解决入参为不可变` Map ` 类型时的错误
168
184
169
- ###3 .7.0 - 2015-04-21
185
+ ### 3.7.0 - 2015-04-21
170
186
171
187
- 由于` orderby ` 参数经常被错误认为的使用,因此该版本全面移除了` orderby `
172
188
- ` Page<E> ` 移除` orderby ` 属性
@@ -175,7 +191,7 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
175
191
- 当` offsetAsPageNum=false ` 的时候,由于PageNum问题,` RowBounds ` 查询的时候` reasonable ` 会强制为false,已解决
176
192
- 少数情况下的select中包含单个函数查询时,会使用嵌套的count查询
177
193
178
- ###3 .6.4 - 2015-04-05
194
+ ### 3.6.4 - 2015-04-05
179
195
180
196
- 重构,将原来的内部类全部独立出来,尤其是` Parser ` 接口以及全部实现。
181
197
现在可以直接使用` Parser ` ,使用方法如下:
@@ -194,23 +210,23 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
194
210
pageSql = sqlServer. convertToPageSql(originalSql, 1 , 10 );
195
211
```
196
212
197
- ###3 .6.3 - 2015-03-10
213
+ ### 3.6.3 - 2015-03-10
198
214
199
215
- 解决了一个潜在的bug,对[ 通用Mapper] ( http://git.oschina.net/free/Mapper ) 中的` SqlMapper ` 进行分页时,需要使用这个版本
200
216
201
- ###3 .6.2 - 2015-03-09
217
+ ### 3.6.2 - 2015-03-09
202
218
203
219
- 本次更新只是增加了一个异常提示,当错误的配置了多个分页插件时,会有更友好的错误提示:
204
220
205
221
> 分页插件配置错误:请不要在系统中配置多个分页插件(使用Spring时,mybatis-config.xml和Spring<bean >配置方式,请选择其中一种,不要同时配置多个分页插件)!
206
222
207
- ###3 .6.1 - 2015-02-28
223
+ ### 3.6.1 - 2015-02-28
208
224
209
225
- 解决select distinct导致count查询结果不正确的bug#35
210
226
211
227
- 完善测试
212
228
213
- ###3 .6.0 - 2015-02-03
229
+ ### 3.6.0 - 2015-02-03
214
230
215
231
- 支持db2数据库
216
232
@@ -235,13 +251,13 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
235
251
236
252
- ` PageHelper ` 增加了` startPage(int pageNum, int pageSize,String orderBy) ` 方法(<b >3.7.0版本以后,移除了该方法</b >),针对sqlserver
237
253
238
- ###3 .5.1 - 2015-01-20
254
+ ### 3.5.1 - 2015-01-20
239
255
240
256
- 解决[ bug #25 ] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/25 ) ,当参数是null并且是动态查询时,由于加入分页参数,导致参数不在是null,因而会导致部分判断出错,导致异常。
241
257
242
258
- 上面这个bug会影响使用了动态标签并且允许入参为null的所有查询,虽然并不常见,但是建议各位使用最新版本
243
259
244
- ###3 .5.0 - 2015-01-11
260
+ ### 3.5.0 - 2015-01-11
245
261
246
262
- 增加更丰富的调用方法[ #23 ] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/23 )
247
263
- ` startPage(int pageNum, int pageSize) `
@@ -256,7 +272,7 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
256
272
257
273
- 解决一个` <foreach> ` 标签使用对象内部属性循环时的bug[ #24 ] ( http://git.oschina.net/free/Mybatis_PageHelper/issues/24 )
258
274
259
- ###3 .4.2 - 2014-12-27
275
+ ### 3.4.2 - 2014-12-27
260
276
261
277
- ` PageInfo ` 中的` judgePageBoudary ` 方法修改:
262
278
``` java
@@ -265,29 +281,29 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
265
281
isLastPage = pageNum == pages;
266
282
```
267
283
268
- ###3 .4.1 - 2014-12-24
284
+ ### 3.4.1 - 2014-12-24
269
285
270
286
- 重大bug修复,` SqlParser ` 解析sql失败的时候返回了不带` count(*) ` 的sql,导致查询失败。
271
287
272
288
- 产生原因,由于` SqlParser ` 在系统中出现的位置修改后,导致这里出现错误。
273
289
274
290
- 强烈推荐各位更新到最新版本。
275
291
276
- ###v3.4.0 - 2014-12-18
292
+ ### v3.4.0 - 2014-12-18
277
293
278
294
- 增加了对` @SelectProvider ` 注解方法的支持,不使用这种方式的不影响
279
295
280
296
- 对基本逻辑进行修改,减少反射调用和获取` BoundSql ` 次数
281
297
282
- ###v3.3.2 - 2014-12-10
298
+ ### v3.3.2 - 2014-12-10
283
299
284
300
- ` PageInfo ` 增加序列化。
285
301
286
- ###v3.3.1bug修复 - 2014-12-07
302
+ ### v3.3.1bug修复 - 2014-12-07
287
303
288
304
- 动态sql时,判断条件不会出现在ParameterMappings中,会导致获取不到属性。通常是因为判断条件中的属性没有出现在` #{} ` 中。
289
305
290
- ###v3.3.0
306
+ ### v3.3.0
291
307
292
308
1 . 对` MappedStatement ` 对象进行缓存,包括count查询的` MappedStatement ` 以及分页查询的` MappedStatement ` ,分页查询改为预编译查询。
293
309
@@ -301,7 +317,7 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
301
317
302
318
5 . 增加对` PostgreSQL ` ,` MariaDB ` ,` SQLite ` 支持。其中` MariaDB ` ,` SQLite ` 和` Mysql ` 分页一样。
303
319
304
- ###v3.2.3
320
+ ### v3.2.3
305
321
306
322
1 . 解决` mysql ` 带有` for update ` 时分页错误的问题。
307
323
@@ -314,43 +330,43 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
314
330
5 . 为了便于本项目的统一管理和发布,本项目会和github上面同步,项目会改为Maven管理的结构。
315
331
316
332
317
- ###v3.2.2
333
+ ### v3.2.2
318
334
319
335
1 . 简单重构优化代码。
320
336
321
337
2 . 新增` PageInfo ` 包装类,对分页结果Page<E >进行封装,方便EL使用。
322
338
323
339
3 . 将` SystemMetaObject ` 类的` fromObject ` 方法内置到分页插件中,方便低版本的Mybatis使用该插件。
324
340
325
- ###v3.2.1
341
+ ### v3.2.1
326
342
327
343
1 . 新增` offsetAsPageNum ` 参数,用来控制` RowBounds ` 中的` offset ` 是否作为` pageNum ` 使用,` pageNum ` 和` startPage ` 中的含义相同,` pageNum ` 是页码。该参数默认为` false ` ,使用默认值时,不需要配置该参数。
328
344
329
345
2 . 新增` rowBoundsWithCount ` 参数,用来控制使用` RowBounds ` 时是否执行` count ` 查询。该参数默认为` false ` ,使用默认值时,不需要配置该参数。
330
346
331
- ###v3.2.0
347
+ ### v3.2.0
332
348
333
349
1 . 增加了对` Hsqldb ` 的支持,主要目的是为了方便测试使用` Hsqldb `
334
350
335
351
2 . 增加了该项目的一个测试项目[ Mybatis-Sample] ( http://git.oschina.net/free/Mybatis-Sample ) ,测试项目数据库使用` Hsqldb `
336
352
337
353
3 . 增加MIT协议
338
354
339
- ###v3.1.2
355
+ ### v3.1.2
340
356
341
357
1 . 解决count sql在` oracle ` 中的错误
342
358
343
- ###v3.1.1
359
+ ### v3.1.1
344
360
345
361
1 . 统一返回值为` Page<E> ` (可以直接按` List ` 使用),方便在页面使用EL表达式,如` ${page.pageNum} ` ,` ${page.total} `
346
362
347
- ###v3.1.0
363
+ ### v3.1.0
348
364
349
365
1 . 解决了` RowBounds ` 分页的严重BUG,原先会在物理分页基础上进行内存分页导致严重错误,已修复
350
366
351
367
2 . 增加对MySql的支持,该支持由[ 鲁家宁] ( http://my.oschina.net/lujianing ) 增加。
352
368
353
- ###v3.0
369
+ ### v3.0
354
370
355
371
1 . 现在支持两种形式的分页,使用` PageHelper.startPage ` 方法或者使用` RowBounds ` 参数
356
372
@@ -362,21 +378,21 @@ total = PageHelper.count(()->countryMapper.selectLike(country));
362
378
363
379
5 . 关于两种形式的调用,请看示例代码
364
380
365
- ###v2.1
381
+ ### v2.1
366
382
367
383
1 . 解决并发异常
368
384
369
385
2 . 分页sql改为直接拼sql
370
386
371
- ###v2.0
387
+ ### v2.0
372
388
373
389
1 . 支持Mybatis缓存,count和分页同时支持(二者同步)
374
390
375
391
2 . 修改拦截器签名,拦截` Executor `
376
392
377
393
3 . 将` Page<E> ` 类移到外面,方便调用
378
394
379
- ###v1.0
395
+ ### v1.0
380
396
381
397
1 . 支持` <foreach> ` 等标签的分页查询
382
398
0 commit comments