|
@@ -17,8 +17,6 @@ package com.baomidou.mybatisplus.core.toolkit.sql;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.enums.SqlLike;
|
|
|
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
|
|
|
-import com.baomidou.mybatisplus.core.parser.ISqlParser;
|
|
|
-import com.baomidou.mybatisplus.core.parser.SqlInfo;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -31,66 +29,7 @@ import com.baomidou.mybatisplus.core.parser.SqlInfo;
|
|
|
public class SqlUtils {
|
|
|
|
|
|
private final static SqlFormatter SQL_FORMATTER = new SqlFormatter();
|
|
|
- private static ISqlParser COUNT_SQL_PARSER = null;
|
|
|
- private static Class<ISqlParser> DEFAULT_CLASS = null;
|
|
|
|
|
|
- static {
|
|
|
- try {
|
|
|
- //TODO: 3.0
|
|
|
- DEFAULT_CLASS = (Class<ISqlParser>) Class.forName("com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize");
|
|
|
- } catch (ClassNotFoundException e) {
|
|
|
- //skip
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 获取 COUNT 原生 SQL 包装
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param originalSql
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static String getOriginalCountSql(String originalSql) {
|
|
|
- return String.format("SELECT COUNT(1) FROM ( %s ) TOTAL", originalSql);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * <p>
|
|
|
- * 获取CountOptimize
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @param optimizeCountSql 是否优化 Count SQL
|
|
|
- * @param sqlParser Count SQL 解析类
|
|
|
- * @param originalSql 需要计算Count SQL
|
|
|
- * @return SqlInfo
|
|
|
- */
|
|
|
- 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
|
|
|
- try {
|
|
|
- if (DEFAULT_CLASS == null) {
|
|
|
- //plus-extension not included
|
|
|
- return SqlInfo.newInstance().setSql(getOriginalCountSql(originalSql));
|
|
|
- }
|
|
|
- // TODO 3.0 changed
|
|
|
- COUNT_SQL_PARSER = DEFAULT_CLASS.newInstance();
|
|
|
- } catch (Exception e) {
|
|
|
- throw new MybatisPlusException(e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return COUNT_SQL_PARSER.parser(null, originalSql);
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 格式sql
|