Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
Mybatis Jpa Extra
提交
dc00497d
M
Mybatis Jpa Extra
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
Mybatis Jpa Extra
8 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Mybatis Jpa Extra
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
dc00497d
编写于
7月 19, 2023
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JpaPage JpaPageResultsSqlCache
上级
40035899
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
119 addition
and
119 deletion
+119
-119
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/JpaService.java
...ore/src/main/java/org/dromara/mybatis/jpa/JpaService.java
+2
-2
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/DB2Dialect.java
...main/java/org/dromara/mybatis/jpa/dialect/DB2Dialect.java
+15
-15
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/DerbyDialect.java
...in/java/org/dromara/mybatis/jpa/dialect/DerbyDialect.java
+12
-12
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/Dialect.java
...rc/main/java/org/dromara/mybatis/jpa/dialect/Dialect.java
+4
-4
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/HighgoDialect.java
...n/java/org/dromara/mybatis/jpa/dialect/HighgoDialect.java
+13
-13
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/MySQLDialect.java
...in/java/org/dromara/mybatis/jpa/dialect/MySQLDialect.java
+15
-15
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/OracleDialect.java
...n/java/org/dromara/mybatis/jpa/dialect/OracleDialect.java
+13
-13
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/PostgreSQLDialect.java
...va/org/dromara/mybatis/jpa/dialect/PostgreSQLDialect.java
+13
-13
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/SQLServerDialect.java
...ava/org/dromara/mybatis/jpa/dialect/SQLServerDialect.java
+13
-13
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaEntity.java
...c/main/java/org/dromara/mybatis/jpa/entity/JpaEntity.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaPage.java
...src/main/java/org/dromara/mybatis/jpa/entity/JpaPage.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaPageResultsSqlCache.java
...rg/dromara/mybatis/jpa/entity/JpaPageResultsSqlCache.java
+2
-2
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/interceptor/StatementHandlerInterceptor.java
.../mybatis/jpa/interceptor/StatementHandlerInterceptor.java
+9
-9
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/PageResultsCountProvider.java
...romara/mybatis/jpa/provider/PageResultsCountProvider.java
+6
-6
未找到文件。
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/JpaService.java
浏览文件 @
dc00497d
...
...
@@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
org.dromara.mybatis.jpa.entity.JpaPageResults
;
import
org.dromara.mybatis.jpa.entity.PageResultsSqlCache
;
import
org.dromara.mybatis.jpa.entity.
Jpa
PageResultsSqlCache
;
import
org.dromara.mybatis.jpa.query.Query
;
import
org.dromara.mybatis.jpa.spring.MybatisJpaContext
;
import
org.dromara.mybatis.jpa.util.BeanUtil
;
...
...
@@ -50,7 +50,7 @@ public class JpaService <T extends JpaEntity> {
@JsonIgnore
//定义全局缓存
public
static
final
Cache
<
String
,
PageResultsSqlCache
>
pageResultsBoundSqlCache
=
public
static
final
Cache
<
String
,
Jpa
PageResultsSqlCache
>
pageResultsBoundSqlCache
=
Caffeine
.
newBuilder
()
.
expireAfterWrite
(
300
,
TimeUnit
.
SECONDS
)
.
build
();
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/DB2Dialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
DB2Dialect
extends
Dialect
{
...
...
@@ -35,9 +35,9 @@ public class DB2Dialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
if
(
pag
ination
.
getPageSize
()
==
0
)
{
return
sql
+
" fetch first "
+
pag
ination
.
getStartRow
()
+
" rows only"
;
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
if
(
pag
e
.
getPageSize
()
==
0
)
{
return
sql
+
" fetch first "
+
pag
e
.
getStartRow
()
+
" rows only"
;
}
StringBuilder
pagingSelectSql
=
new
StringBuilder
(
sql
.
length
()
+
200
)
...
...
@@ -46,20 +46,20 @@ public class DB2Dialect extends Dialect {
)
.
append
(
sql
)
//nest the main query in an outer select
.
append
(
" fetch first "
)
.
append
(
pag
ination
.
getPageSize
())
.
append
(
pag
e
.
getPageSize
())
.
append
(
" rows only ) as inner2_ ) as inner1_ where rownumber_ > "
)
.
append
(
pag
ination
.
getStartRow
())
.
append
(
pag
e
.
getStartRow
())
.
append
(
" order by rownumber_"
);
return
pagingSelectSql
.
toString
();
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
page
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
}
else
if
(
pag
e
.
getPageSize
()>
0
){
return
sql
+
" limit ? "
;
}
else
{
return
sql
+
" limit ?"
;
...
...
@@ -68,14 +68,14 @@ public class DB2Dialect extends Dialect {
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/DerbyDialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
DerbyDialect
extends
Dialect
{
...
...
@@ -35,26 +35,26 @@ public class DerbyDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
StringBuilder
pagingSelectSql
=
new
StringBuilder
(
sql
.
length
()
+
50
);
pagingSelectSql
.
append
(
sql
);
if
(
pag
ination
.
getStartRow
()
==
0
)
{
if
(
pag
e
.
getStartRow
()
==
0
)
{
pagingSelectSql
.
append
(
" fetch first "
);
}
else
{
pagingSelectSql
.
append
(
" offset "
).
append
(
pag
ination
.
getStartRow
()
).
append
(
" rows fetch next "
);
pagingSelectSql
.
append
(
" offset "
).
append
(
pag
e
.
getStartRow
()
).
append
(
" rows fetch next "
);
}
pagingSelectSql
.
append
(
pag
ination
.
getPageSize
()
).
append
(
" rows only"
);
pagingSelectSql
.
append
(
pag
e
.
getPageSize
()
).
append
(
" rows only"
);
return
pagingSelectSql
.
toString
();
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
...
...
@@ -67,14 +67,14 @@ public class DerbyDialect extends Dialect {
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/Dialect.java
浏览文件 @
dc00497d
...
...
@@ -21,7 +21,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.util.HashMap
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -77,19 +77,19 @@ public abstract class Dialect {
* @return The modified query statement with the limit applied.
*/
public
String
getLimitString
(
String
query
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
query
,
JpaPag
e
page
)
{
throw
new
UnsupportedOperationException
(
"Paged queries not supported by "
+
getClass
().
getName
());
}
public
String
getPreparedStatementLimitString
(
String
query
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
query
,
JpaPag
e
page
)
{
throw
new
UnsupportedOperationException
(
"Paged queries not supported by "
+
getClass
().
getName
());
}
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
pagination
)
{
throw
new
UnsupportedOperationException
(
"Paged queries not supported by "
+
getClass
().
getName
());
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/HighgoDialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
HighgoDialect
extends
Dialect
{
...
...
@@ -35,19 +35,19 @@ public class HighgoDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
ination
.
getPageSize
()+
" offset "
+
pagination
.
getStartRow
()
;
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
return
sql
+
" limit "
+
pag
ination
.
getPageSize
();
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
e
.
getPageSize
()+
" offset "
+
page
.
getStartRow
()
;
}
else
if
(
pag
e
.
getPageSize
()>
0
){
return
sql
+
" limit "
+
pag
e
.
getPageSize
();
}
else
{
return
sql
+
" limit 1000"
;
}
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
...
...
@@ -60,14 +60,14 @@ public class HighgoDialect extends Dialect {
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/MySQLDialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
MySQLDialect
extends
Dialect
{
...
...
@@ -41,20 +41,20 @@ public class MySQLDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
pag
ination
.
calculate
();
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
ination
.
getStartRow
()+
" , "
+
pagination
.
getPageSize
();
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
return
sql
+
" limit "
+
pag
ination
.
getPageSize
();
pag
e
.
calculate
();
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
e
.
getStartRow
()+
" , "
+
page
.
getPageSize
();
}
else
if
(
pag
e
.
getPageSize
()>
0
){
return
sql
+
" limit "
+
pag
e
.
getPageSize
();
}
else
{
return
sql
+
" limit "
+
pag
ination
.
getPageSize
();
return
sql
+
" limit "
+
pag
e
.
getPageSize
();
}
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
...
...
@@ -66,14 +66,14 @@ public class MySQLDialect extends Dialect {
}
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/OracleDialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
OracleDialect
extends
Dialect
{
...
...
@@ -35,9 +35,9 @@ public class OracleDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
if
(
pag
ination
.
getPageSize
()
==
0
)
{
return
sql
+
" fetch first "
+
pag
ination
.
getStartRow
()
+
" rows only"
;
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
if
(
pag
e
.
getPageSize
()
==
0
)
{
return
sql
+
" fetch first "
+
pag
e
.
getStartRow
()
+
" rows only"
;
}
StringBuilder
pagingSelect
=
new
StringBuilder
(
sql
.
length
()
+
200
)
.
append
(
...
...
@@ -45,15 +45,15 @@ public class OracleDialect extends Dialect {
)
.
append
(
sql
)
//nest the main query in an outer select
.
append
(
") inner_table_ ) where rownumber_ > "
)
.
append
(
pag
ination
.
getStartRow
()
)
.
append
(
pag
e
.
getStartRow
()
)
.
append
(
" and rownumber_ <="
)
.
append
(
pag
ination
.
getEndRow
()
)
.
append
(
pag
e
.
getEndRow
()
)
.
append
(
" order by rownumber_"
);
return
pagingSelect
.
toString
();
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
...
...
@@ -65,14 +65,14 @@ public class OracleDialect extends Dialect {
}
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/PostgreSQLDialect.java
浏览文件 @
dc00497d
...
...
@@ -20,7 +20,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
PostgreSQLDialect
extends
Dialect
{
...
...
@@ -35,19 +35,19 @@ public class PostgreSQLDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
ination
.
getPageSize
()
+
" offset "
+
pagination
.
getStartRow
()
;
}
else
if
(
pag
ination
.
getPageSize
()
>
0
){
return
sql
+
" limit "
+
pag
ination
.
getPageSize
();
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
return
sql
+
" limit "
+
pag
e
.
getPageSize
()
+
" offset "
+
page
.
getStartRow
()
;
}
else
if
(
pag
e
.
getPageSize
()
>
0
){
return
sql
+
" limit "
+
pag
e
.
getPageSize
();
}
else
{
return
sql
+
" limit 1000"
;
}
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? offset ?"
;
...
...
@@ -59,14 +59,14 @@ public class PostgreSQLDialect extends Dialect {
}
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/dialect/SQLServerDialect.java
浏览文件 @
dc00497d
...
...
@@ -21,7 +21,7 @@ package org.dromara.mybatis.jpa.dialect;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
public
class
SQLServerDialect
extends
Dialect
{
...
...
@@ -35,15 +35,15 @@ public class SQLServerDialect extends Dialect {
}
@Override
public
String
getLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getLimitString
(
String
sql
,
JpaPag
e
page
)
{
StringBuilder
pagingSelectSql
=
new
StringBuilder
(
""
);
if
(
pag
ination
.
getPageSize
()>
0
){
if
(
pag
e
.
getPageSize
()>
0
){
pagingSelectSql
.
append
(
"select top "
+
pag
ination
.
getPageSize
()+
" * from ( "
);
pagingSelectSql
.
append
(
"select top "
+
pag
e
.
getPageSize
()+
" * from ( "
);
pagingSelectSql
.
append
(
"select row_number() over() as rownumber,mybatis_query_temp_table.* from ( "
);
pagingSelectSql
.
append
(
"mybatis_query_temp_table ) mybatis_query_temp_page "
);
if
(
pag
ination
.
getStartRow
()>
0
){
pagingSelectSql
.
append
(
"where rownumber > "
+
pag
ination
.
getStartRow
());
if
(
pag
e
.
getStartRow
()>
0
){
pagingSelectSql
.
append
(
"where rownumber > "
+
pag
e
.
getStartRow
());
}
}
else
{
return
sql
;
...
...
@@ -52,7 +52,7 @@ public class SQLServerDialect extends Dialect {
}
@Override
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
ination
pagination
)
{
public
String
getPreparedStatementLimitString
(
String
sql
,
JpaPag
e
pagination
)
{
//LIMIT #{pageResults} OFFSET #{startRow}
if
(
pagination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
return
sql
+
" limit ? , ?"
;
...
...
@@ -64,14 +64,14 @@ public class SQLServerDialect extends Dialect {
}
@Override
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
ination
pagination
)
{
public
void
setLimitParamters
(
PreparedStatement
preparedStatement
,
int
parameterSize
,
JpaPag
e
page
)
{
try
{
if
(
pag
ination
.
getPageSize
()>
0
&&
pagination
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
}
else
if
(
pag
ination
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
ination
.
getPageSize
());
if
(
pag
e
.
getPageSize
()>
0
&&
page
.
getStartRow
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
if
(
pag
e
.
getPageSize
()>
0
){
preparedStatement
.
setInt
(++
parameterSize
,
pag
e
.
getPageSize
());
}
else
{
preparedStatement
.
setInt
(++
parameterSize
,
1000
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaEntity.java
浏览文件 @
dc00497d
...
...
@@ -30,7 +30,7 @@ import org.dromara.mybatis.jpa.metadata.MapperMetadata;
* @author Crystal.sea
*
*/
public
class
JpaEntity
extends
JpaPag
ination
implements
Serializable
{
public
class
JpaEntity
extends
JpaPag
e
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6984977786868857466L
;
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaPag
ination
.java
→
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/JpaPag
e
.java
浏览文件 @
dc00497d
...
...
@@ -29,7 +29,7 @@ import jakarta.persistence.Transient;
* @author Crystal.Sea
*
*/
public
class
JpaPag
ination
{
public
class
JpaPag
e
{
public
static
final
int
MAX_RESULTS
=
10000
;
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/PageResultsSqlCache.java
→
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/entity/
Jpa
PageResultsSqlCache.java
浏览文件 @
dc00497d
...
...
@@ -19,14 +19,14 @@ package org.dromara.mybatis.jpa.entity;
import
org.apache.ibatis.mapping.BoundSql
;
public
class
PageResultsSqlCache
{
public
class
Jpa
PageResultsSqlCache
{
String
sql
;
BoundSql
boundSql
;
public
PageResultsSqlCache
(
String
sql
,
BoundSql
boundSql
)
{
public
Jpa
PageResultsSqlCache
(
String
sql
,
BoundSql
boundSql
)
{
super
();
this
.
sql
=
sql
;
this
.
boundSql
=
boundSql
;
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/interceptor/StatementHandlerInterceptor.java
浏览文件 @
dc00497d
...
...
@@ -32,8 +32,8 @@ import org.apache.ibatis.plugin.Signature;
import
org.apache.ibatis.reflection.MetaObject
;
import
org.apache.ibatis.reflection.SystemMetaObject
;
import
org.dromara.mybatis.jpa.JpaService
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.PageResultsSqlCache
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
import
org.dromara.mybatis.jpa.entity.
Jpa
PageResultsSqlCache
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -70,20 +70,20 @@ public class StatementHandlerInterceptor extends AbstractStatementHandlerInterce
String
sql
=
boundSql
.
getSql
();
logger
.
trace
(
"parameter object ==> {}"
,
parameterObject
);
//判断是否select语句及需要分页支持
if
((
parameterObject
instanceof
JpaPag
ination
)
if
((
parameterObject
instanceof
JpaPag
e
)
&&
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"select"
))
)
{
JpaPag
ination
pagination
=(
JpaPagination
)
parameterObject
;
JpaPag
e
page
=(
JpaPage
)
parameterObject
;
//分页标识
if
(
pag
ination
.
isPageable
()){
if
(
pag
e
.
isPageable
()){
logger
.
trace
(
"prepare boundSql ==> {}"
,
removeBreakingWhitespace
(
sql
));
if
(
statement
instanceof
SimpleStatementHandler
){
sql
=
dialect
.
getLimitString
(
sql
,
pag
ination
);
sql
=
dialect
.
getLimitString
(
sql
,
pag
e
);
}
else
if
(
statement
instanceof
PreparedStatementHandler
){
JpaService
.
pageResultsBoundSqlCache
.
put
(
pag
ination
.
getPageResultSelectUUID
(),
new
PageResultsSqlCache
(
sql
,
boundSql
)
pag
e
.
getPageResultSelectUUID
(),
new
Jpa
PageResultsSqlCache
(
sql
,
boundSql
)
);
sql
=
dialect
.
getLimitString
(
sql
,
pag
ination
);
sql
=
dialect
.
getLimitString
(
sql
,
pag
e
);
}
logger
.
trace
(
"prepare dialect boundSql : {}"
,
removeBreakingWhitespace
(
sql
));
metaObject
.
setValue
(
"boundSql.sql"
,
sql
);
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/PageResultsCountProvider.java
浏览文件 @
dc00497d
...
...
@@ -24,8 +24,8 @@ import org.apache.ibatis.mapping.BoundSql;
import
org.apache.ibatis.mapping.ParameterMapping
;
import
org.dromara.mybatis.jpa.JpaService
;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
org.dromara.mybatis.jpa.entity.JpaPag
ination
;
import
org.dromara.mybatis.jpa.entity.PageResultsSqlCache
;
import
org.dromara.mybatis.jpa.entity.JpaPag
e
;
import
org.dromara.mybatis.jpa.entity.
Jpa
PageResultsSqlCache
;
import
org.dromara.mybatis.jpa.metadata.SqlSyntaxConstants
;
import
org.dromara.mybatis.jpa.util.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -44,10 +44,10 @@ public class PageResultsCountProvider <T extends JpaEntity>{
* @return executePageResultsCount sql String
*/
public
String
executePageResultsCount
(
T
entity
)
{
JpaPag
ination
pagination
=(
JpaPagination
)
entity
;
JpaPag
e
page
=(
JpaPage
)
entity
;
//获取缓存数据
PageResultsSqlCache
pageResultsSqlCache
=
JpaService
.
pageResultsBoundSqlCache
.
getIfPresent
(
pag
ination
.
getPageResultSelectUUID
());
Jpa
PageResultsSqlCache
pageResultsSqlCache
=
JpaService
.
pageResultsBoundSqlCache
.
getIfPresent
(
pag
e
.
getPageResultSelectUUID
());
//多个空格 tab 替换成1个空格
String
selectSql
=
StringUtils
.
lineBreak2Blank
(
pageResultsSqlCache
.
getSql
());
...
...
@@ -90,7 +90,7 @@ public class PageResultsCountProvider <T extends JpaEntity>{
}
}
//删除缓存
JpaService
.
pageResultsBoundSqlCache
.
invalidate
(
pag
ination
.
getPageResultSelectUUID
());
JpaService
.
pageResultsBoundSqlCache
.
invalidate
(
pag
e
.
getPageResultSelectUUID
());
logger
.
trace
(
"Count SQL : \n{}"
,
sql
);
return
sql
.
toString
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录