optimize: 统一原生 SQL 片段处理类的命名。

This commit is contained in:
Suomm 2023-11-09 21:46:39 +08:00
parent b3dba71604
commit 54afe053b2
10 changed files with 97 additions and 45 deletions

View File

@ -19,7 +19,7 @@ package com.mybatisflex.core.activerecord.query;
import com.mybatisflex.core.query.CPI; import com.mybatisflex.core.query.CPI;
import com.mybatisflex.core.query.Join; import com.mybatisflex.core.query.Join;
import com.mybatisflex.core.query.QueryCondition; import com.mybatisflex.core.query.QueryCondition;
import com.mybatisflex.core.query.RawFragment; import com.mybatisflex.core.query.RawQueryCondition;
/** /**
* Lambda joins 构建器 * Lambda joins 构建器
@ -43,7 +43,7 @@ public class JoinBuilder<R extends QueryModel<R>> {
} }
public R on(String on) { public R on(String on) {
join.on(new RawFragment(on)); join.on(new RawQueryCondition(on));
return queryModel; return queryModel;
} }

View File

@ -37,7 +37,7 @@ public class Joiner<M> {
} }
public M on(String on) { public M on(String on) {
join.on(new RawFragment(on)); join.on(new RawQueryCondition(on));
return queryWrapper; return queryWrapper;
} }

View File

@ -149,11 +149,11 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
public QueryCondition and(String sql) { public QueryCondition and(String sql) {
return and(new RawFragment(sql)); return and(new RawQueryCondition(sql));
} }
public QueryCondition and(String sql, Object... params) { public QueryCondition and(String sql, Object... params) {
return and(new RawFragment(sql, params)); return and(new RawQueryCondition(sql, params));
} }
public QueryCondition and(QueryCondition nextCondition) { public QueryCondition and(QueryCondition nextCondition) {
@ -161,11 +161,11 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
} }
public QueryCondition or(String sql) { public QueryCondition or(String sql) {
return or(new RawFragment(sql)); return or(new RawQueryCondition(sql));
} }
public QueryCondition or(String sql, Object... params) { public QueryCondition or(String sql, Object... params) {
return or(new RawFragment(sql, params)); return or(new RawQueryCondition(sql, params));
} }
public QueryCondition or(QueryCondition nextCondition) { public QueryCondition or(QueryCondition nextCondition) {
@ -208,8 +208,8 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
.append(SqlConsts.BRACKET_RIGHT); .append(SqlConsts.BRACKET_RIGHT);
} }
//原生sql //原生sql
else if (value instanceof RawFragment) { else if (value instanceof RawQueryCondition) {
sql.append(((RawFragment) value).getContent()); sql.append(((RawQueryCondition) value).getContent());
} }
//正常查询构建问号 //正常查询构建问号
else { else {
@ -251,7 +251,7 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
|| SqlConsts.IS_NOT_NULL.equals(logic) || SqlConsts.IS_NOT_NULL.equals(logic)
|| value instanceof QueryColumn || value instanceof QueryColumn
|| value instanceof QueryWrapper || value instanceof QueryWrapper
|| value instanceof RawFragment) { || value instanceof RawQueryCondition) {
//do nothing //do nothing
} }

View File

@ -2628,14 +2628,14 @@ public class QueryMethods {
* 构建原生查询条件 * 构建原生查询条件
*/ */
public static QueryCondition raw(String raw) { public static QueryCondition raw(String raw) {
return new RawFragment(raw); return new RawQueryCondition(raw);
} }
/** /**
* 构建原生查询条件并附带参数 * 构建原生查询条件并附带参数
*/ */
public static QueryCondition raw(String raw, Object... params) { public static QueryCondition raw(String raw, Object... params) {
return new RawFragment(raw, params); return new RawQueryCondition(raw, params);
} }

View File

@ -23,9 +23,20 @@ import com.mybatisflex.core.dialect.DialectFactory;
import com.mybatisflex.core.table.TableDef; import com.mybatisflex.core.table.TableDef;
import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableInfo;
import com.mybatisflex.core.table.TableInfoFactory; import com.mybatisflex.core.table.TableInfoFactory;
import com.mybatisflex.core.util.*; import com.mybatisflex.core.util.ArrayUtil;
import com.mybatisflex.core.util.ClassUtil;
import com.mybatisflex.core.util.CollectionUtil;
import com.mybatisflex.core.util.LambdaGetter;
import com.mybatisflex.core.util.LambdaUtil;
import com.mybatisflex.core.util.SqlUtil;
import com.mybatisflex.core.util.StringUtil;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Predicate; import java.util.function.Predicate;
@ -240,12 +251,12 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
} }
public QueryWrapper where(String sql) { public QueryWrapper where(String sql) {
this.setWhereQueryCondition(new RawFragment(sql)); this.setWhereQueryCondition(new RawQueryCondition(sql));
return this; return this;
} }
public QueryWrapper where(String sql, Object... params) { public QueryWrapper where(String sql, Object... params) {
this.setWhereQueryCondition(new RawFragment(sql, params)); this.setWhereQueryCondition(new RawQueryCondition(sql, params));
return this; return this;
} }
@ -270,12 +281,12 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
} }
public QueryWrapper and(String sql) { public QueryWrapper and(String sql) {
this.addWhereQueryCondition(new RawFragment(sql), SqlConnector.AND); this.addWhereQueryCondition(new RawQueryCondition(sql), SqlConnector.AND);
return this; return this;
} }
public QueryWrapper and(String sql, Object... params) { public QueryWrapper and(String sql, Object... params) {
this.addWhereQueryCondition(new RawFragment(sql, params), SqlConnector.AND); this.addWhereQueryCondition(new RawQueryCondition(sql, params), SqlConnector.AND);
return this; return this;
} }
@ -319,12 +330,12 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
} }
public QueryWrapper or(String sql) { public QueryWrapper or(String sql) {
this.addWhereQueryCondition(new RawFragment(sql), SqlConnector.OR); this.addWhereQueryCondition(new RawQueryCondition(sql), SqlConnector.OR);
return this; return this;
} }
public QueryWrapper or(String sql, Object... params) { public QueryWrapper or(String sql, Object... params) {
this.addWhereQueryCondition(new RawFragment(sql, params), SqlConnector.OR); this.addWhereQueryCondition(new RawQueryCondition(sql, params), SqlConnector.OR);
return this; return this;
} }
@ -766,7 +777,7 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
} }
for (String queryOrderBy : orderBys) { for (String queryOrderBy : orderBys) {
if (StringUtil.isNotBlank(queryOrderBy)) { if (StringUtil.isNotBlank(queryOrderBy)) {
addOrderBy(new StringQueryOrderBy(queryOrderBy)); addOrderBy(new RawQueryOrderBy(queryOrderBy));
} }
} }
return this; return this;

View File

@ -22,14 +22,16 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
* 自定义字符串列用于扩展 * 原生列
*
* @author michael
* @author 王帅
*/ */
public class RawQueryColumn extends QueryColumn implements HasParamsColumn { public class RawQueryColumn extends QueryColumn implements HasParamsColumn {
protected String content; protected String content;
protected Object[] params; protected Object[] params;
public RawQueryColumn(Object content, Object... params) { public RawQueryColumn(Object content, Object... params) {
this.content = String.valueOf(content); this.content = String.valueOf(content);
this.params = params; this.params = params;
@ -53,6 +55,14 @@ public class RawQueryColumn extends QueryColumn implements HasParamsColumn {
'}'; '}';
} }
public String getContent() {
return content;
}
public Object[] getParams() {
return params;
}
@Override @Override
public RawQueryColumn clone() { public RawQueryColumn clone() {
return (RawQueryColumn) super.clone(); return (RawQueryColumn) super.clone();

View File

@ -22,19 +22,20 @@ import com.mybatisflex.core.util.StringUtil;
import java.util.List; import java.util.List;
/** /**
* SQL 原生片段 * 原生条件
*
* @author michael
* @author 王帅
*/ */
public class RawFragment extends QueryCondition { public class RawQueryCondition extends QueryCondition {
protected String content; protected String content;
public RawQueryCondition(String content) {
public RawFragment(String content) {
this.content = content; this.content = content;
} }
public RawFragment(String content, Object... paras) { public RawQueryCondition(String content, Object... paras) {
this.content = content; this.content = content;
this.setValue(paras); this.setValue(paras);
} }
@ -72,13 +73,19 @@ public class RawFragment extends QueryCondition {
} }
@Override @Override
public RawFragment clone() { public String toString() {
return (RawFragment) super.clone(); return "RawQueryCondition{" +
"content='" + content + '\'' +
'}';
} }
public String getContent() { public String getContent() {
return content; return content;
} }
@Override
public RawQueryCondition clone() {
return (RawQueryCondition) super.clone();
}
} }

View File

@ -22,25 +22,45 @@ import com.mybatisflex.core.util.SqlUtil;
import java.util.List; import java.util.List;
/** /**
* 排序字段 * 原生排序字段
*
* @author michael
* @author 王帅
*/ */
public class StringQueryOrderBy extends QueryOrderBy { public class RawQueryOrderBy extends QueryOrderBy {
private final String orderBy; protected String content;
public StringQueryOrderBy(String orderBy) { public RawQueryOrderBy(String content) {
SqlUtil.keepOrderBySqlSafely(orderBy); this(content, true);
this.orderBy = orderBy; }
public RawQueryOrderBy(String content, boolean checkAvailable) {
if (checkAvailable) {
SqlUtil.keepOrderBySqlSafely(content);
}
this.content = content;
} }
@Override @Override
public String toSql(List<QueryTable> queryTables, IDialect dialect) { public String toSql(List<QueryTable> queryTables, IDialect dialect) {
return orderBy; return content;
} }
@Override @Override
public StringQueryOrderBy clone() { public String toString() {
return (StringQueryOrderBy) super.clone(); return "RawQueryOrderBy{" +
"content='" + content + '\'' +
'}';
}
public String getContent() {
return content;
}
@Override
public RawQueryOrderBy clone() {
return (RawQueryOrderBy) super.clone();
} }
} }

View File

@ -29,7 +29,7 @@ import java.util.Objects;
*/ */
public class RawQueryTable extends QueryTable { public class RawQueryTable extends QueryTable {
private final String content; protected String content;
public RawQueryTable(String content) { public RawQueryTable(String content) {
this.content = content; this.content = content;
@ -60,6 +60,10 @@ public class RawQueryTable extends QueryTable {
'}'; '}';
} }
public String getContent() {
return content;
}
@Override @Override
public RawQueryTable clone() { public RawQueryTable clone() {
return (RawQueryTable) super.clone(); return (RawQueryTable) super.clone();

View File

@ -98,7 +98,7 @@ class WrapperUtil {
Object value = condition.getValue(); Object value = condition.getValue();
if (value == null if (value == null
|| value instanceof QueryColumn || value instanceof QueryColumn
|| value instanceof RawFragment) { || value instanceof RawQueryCondition) {
getValues(condition.next, params); getValues(condition.next, params);
return; return;
} }
@ -133,8 +133,8 @@ class WrapperUtil {
static String buildValue(Object value) { static String buildValue(Object value) {
if (value instanceof Number || value instanceof Boolean) { if (value instanceof Number || value instanceof Boolean) {
return String.valueOf(value); return String.valueOf(value);
} else if (value instanceof RawFragment) { } else if (value instanceof RawQueryCondition) {
return ((RawFragment) value).getContent(); return ((RawQueryCondition) value).getContent();
} else if (value instanceof QueryColumn) { } else if (value instanceof QueryColumn) {
return ((QueryColumn) value).toConditionSql(null, DialectFactory.getDialect()); return ((QueryColumn) value).toConditionSql(null, DialectFactory.getDialect());
} else { } else {