|
@@ -18,6 +18,9 @@ package com.baomidou.mybatisplus.extension.toolkit;
|
|
import com.baomidou.mybatisplus.core.parser.ISqlParser;
|
|
import com.baomidou.mybatisplus.core.parser.ISqlParser;
|
|
import com.baomidou.mybatisplus.core.parser.SqlInfo;
|
|
import com.baomidou.mybatisplus.core.parser.SqlInfo;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
|
|
|
|
+import org.apache.ibatis.reflection.MetaObject;
|
|
|
|
+
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
/**
|
|
* SQL 解析工具类
|
|
* SQL 解析工具类
|
|
@@ -26,7 +29,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParser
|
|
* @since 2018-07-22
|
|
* @since 2018-07-22
|
|
*/
|
|
*/
|
|
public class SqlParserUtils {
|
|
public class SqlParserUtils {
|
|
- private static ISqlParser COUNT_SQL_PARSER = null;
|
|
|
|
|
|
+
|
|
|
|
+ private static ISqlParser COUNT_SQL_PARSER = new JsqlParserCountOptimize();
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取 COUNT 原生 SQL 包装
|
|
* 获取 COUNT 原生 SQL 包装
|
|
@@ -45,21 +49,17 @@ public class SqlParserUtils {
|
|
* @param sqlParser Count SQL 解析类
|
|
* @param sqlParser Count SQL 解析类
|
|
* @param originalSql 需要计算Count SQL
|
|
* @param originalSql 需要计算Count SQL
|
|
* @return SqlInfo
|
|
* @return SqlInfo
|
|
|
|
+ * @deprecated 3.3.3
|
|
*/
|
|
*/
|
|
|
|
+ @Deprecated
|
|
public static SqlInfo getOptimizeCountSql(boolean optimizeCountSql, ISqlParser sqlParser, String originalSql) {
|
|
public static SqlInfo getOptimizeCountSql(boolean optimizeCountSql, ISqlParser sqlParser, String originalSql) {
|
|
- if (!optimizeCountSql) {
|
|
|
|
- return SqlInfo.newInstance().setSql(getOriginalCountSql(originalSql));
|
|
|
|
- }
|
|
|
|
- // COUNT SQL 解析器
|
|
|
|
- if (null == COUNT_SQL_PARSER) {
|
|
|
|
- if (null != sqlParser) {
|
|
|
|
- // 用户自定义 COUNT SQL 解析
|
|
|
|
- COUNT_SQL_PARSER = sqlParser;
|
|
|
|
- } else {
|
|
|
|
- // 默认 JsqlParser 优化 COUNT
|
|
|
|
- COUNT_SQL_PARSER = new JsqlParserCountOptimize();
|
|
|
|
- }
|
|
|
|
|
|
+ return getOptimizeCountSql(optimizeCountSql, sqlParser, originalSql, null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static SqlInfo getOptimizeCountSql(boolean optimizeCountSql, ISqlParser sqlParser, String originalSql, MetaObject metaObject) {
|
|
|
|
+ if (optimizeCountSql) {
|
|
|
|
+ return Optional.ofNullable(sqlParser).orElseGet(() -> COUNT_SQL_PARSER).parser(metaObject, originalSql);
|
|
}
|
|
}
|
|
- return COUNT_SQL_PARSER.parser(null, originalSql);
|
|
|
|
|
|
+ return SqlInfo.newInstance().setSql(getOriginalCountSql(originalSql));
|
|
}
|
|
}
|
|
}
|
|
}
|