完善代码
This commit is contained in:
1
packscript.txt
Normal file
1
packscript.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
jar cf chenyonUtils.jar -C ChenyonUtils .
|
||||||
@@ -13,7 +13,10 @@ public enum ClauseFactor {
|
|||||||
AND,
|
AND,
|
||||||
OR,
|
OR,
|
||||||
IN,
|
IN,
|
||||||
NOT_IN
|
NOT_IN,
|
||||||
|
FIND_IN_SET,
|
||||||
|
REGEXP,
|
||||||
|
BETWEEN
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class EnumMapUtils {
|
|||||||
}
|
}
|
||||||
return getEnumItemValueByEnumId(targetValue, beanByDisplay.getEnumId());
|
return getEnumItemValueByEnumId(targetValue, beanByDisplay.getEnumId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,10 +44,10 @@ public class EnumMapUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Map map = list.get(0);
|
Map map = list.get(0);
|
||||||
enumId = (Long)map.get("ID");
|
enumId = (Long)map.get("id");
|
||||||
return enumId == null ? "" : enumId + "";
|
return enumId == null ? "" : enumId + "";
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}finally {
|
}finally {
|
||||||
agent.close();
|
agent.close();
|
||||||
}
|
}
|
||||||
@@ -68,13 +69,13 @@ public class EnumMapUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Map map = list.get(0);
|
Map map = list.get(0);
|
||||||
enumId = (Long)map.get("ID");
|
enumId = (Long)map.get("id");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return null;
|
return null;
|
||||||
}finally {
|
}finally {
|
||||||
agent.close();
|
agent.close();
|
||||||
}
|
}
|
||||||
EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
|
EnumManager enumManagerNew = getEnumManager();
|
||||||
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
|
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
|
||||||
if(ctpEnumBean == null) {
|
if(ctpEnumBean == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -98,27 +99,136 @@ public class EnumMapUtils {
|
|||||||
if(beanByDisplay == null || beanByDisplay.getEnumId() == 0l) {
|
if(beanByDisplay == null || beanByDisplay.getEnumId() == 0l) {
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
|
CtpEnumBean ctpEnumBean = getEnumManager().getEnum(beanByDisplay.getEnumId());
|
||||||
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(beanByDisplay.getEnumId());
|
if(ctpEnumBean == null || ctpEnumBean.getItems() == null) {
|
||||||
|
|
||||||
if(ctpEnumBean == null) {
|
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
List<CtpEnumItem> ctpEnumItems = ctpEnumBean.getItems();
|
System.out.println("有" + ctpEnumBean.getItems().size() +"枚举子项");
|
||||||
if(ctpEnumBean.getItems() == null) {
|
for (CtpEnumItem enumItem : ctpEnumBean.getItems()) {
|
||||||
return set;
|
|
||||||
}
|
|
||||||
for (CtpEnumItem enumItem : ctpEnumItems) {
|
|
||||||
set.add(enumItem.getShowvalue());
|
set.add(enumItem.getShowvalue());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static EnumManager getEnumManager() {
|
||||||
|
return (EnumManager) AppContext.getBean("enumManagerNew");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String,CtpEnumItem> getEnumItemMap(FormTableBean formTableBean, String fieldDisplay) {
|
||||||
|
Map<String,CtpEnumItem> map = new HashMap<>();
|
||||||
|
try {
|
||||||
|
FormFieldBean beanByDisplay = formTableBean.getFieldBeanByDisplay(fieldDisplay);
|
||||||
|
if(beanByDisplay == null || beanByDisplay.getEnumId() == 0l) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
EnumManager enumManagerNew = getEnumManager();
|
||||||
|
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(beanByDisplay.getEnumId());
|
||||||
|
|
||||||
|
if(ctpEnumBean == null) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
List<CtpEnumItem> ctpEnumItems = ctpEnumBean.getItems();
|
||||||
|
if(ctpEnumBean.getItems() == null) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
for (CtpEnumItem enumItem : ctpEnumItems) {
|
||||||
|
map.put(enumItem.getShowvalue(),enumItem);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String,CtpEnumItem> getRootEnumItemMap(FormTableBean formTableBean, String fieldDisplay) {
|
||||||
|
Map<String,CtpEnumItem> map = new HashMap<>();
|
||||||
|
try {
|
||||||
|
FormFieldBean beanByDisplay = formTableBean.getFieldBeanByDisplay(fieldDisplay);
|
||||||
|
if(beanByDisplay == null || beanByDisplay.getEnumId() == 0l) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
EnumManager enumManagerNew = getEnumManager();
|
||||||
|
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(beanByDisplay.getEnumId());
|
||||||
|
|
||||||
|
if(ctpEnumBean == null) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
List<CtpEnumItem> ctpEnumItems = ctpEnumBean.getItems();
|
||||||
|
if(ctpEnumBean.getItems() == null) {
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
for (CtpEnumItem enumItem : ctpEnumItems) {
|
||||||
|
if(enumItem.getLevelNum() == 0) {
|
||||||
|
map.put(enumItem.getShowvalue(),enumItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, Object> getEnumItemMap(String pItemId) {
|
||||||
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
|
|
||||||
|
// 空参数直接返回空map
|
||||||
|
if (StringUtils.isBlank(pItemId)) {
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String sql = "SELECT * FROM ctp_enum_item WHERE PARENT_ID = ?";
|
||||||
|
JDBCAgent agent = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
agent = new JDBCAgent();
|
||||||
|
agent.execute(sql, pItemId);
|
||||||
|
|
||||||
|
// 安全获取结果,不强制泛型
|
||||||
|
List<?> resultList = agent.resultSetToList();
|
||||||
|
if (resultList == null || resultList.isEmpty()) {
|
||||||
|
return resultMap; // 统一返回空map,不返回null
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遍历并安全封装
|
||||||
|
for (Object obj : resultList) {
|
||||||
|
if (!(obj instanceof Map)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> itemMap = (Map<String, Object>) obj;
|
||||||
|
Object showValueObj = itemMap.get("showvalue");
|
||||||
|
|
||||||
|
// showvalue 为null 跳过,不生成脏key
|
||||||
|
if (showValueObj == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String key = showValueObj.toString().trim();
|
||||||
|
resultMap.put(key, itemMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 必须打日志!!
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
// 安全关闭,避免空指针 & 关闭异常覆盖业务异常
|
||||||
|
if (agent != null) {
|
||||||
|
try {
|
||||||
|
agent.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
public static String getEnumItemValueByEnumId(String showValue,long enumId) {
|
public static String getEnumItemValueByEnumId(String showValue,long enumId) {
|
||||||
EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
|
EnumManager enumManagerNew = getEnumManager();
|
||||||
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
|
CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
|
||||||
if(ctpEnumBean == null) {
|
if(ctpEnumBean == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -143,7 +253,7 @@ public class EnumMapUtils {
|
|||||||
if(temp == null) {
|
if(temp == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
|
EnumManager enumManagerNew = getEnumManager();
|
||||||
CtpEnumItem ctpEnumItem = enumManagerNew.getCtpEnumItem(temp);
|
CtpEnumItem ctpEnumItem = enumManagerNew.getCtpEnumItem(temp);
|
||||||
if(ctpEnumItem == null) {
|
if(ctpEnumItem == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -82,6 +82,15 @@ public class FormTableExecutor {
|
|||||||
List<String> queryDisplays,
|
List<String> queryDisplays,
|
||||||
List<FormWhereCondition> conditions,
|
List<FormWhereCondition> conditions,
|
||||||
boolean changeEnum) {
|
boolean changeEnum) {
|
||||||
|
return query(ctx, queryDisplays, conditions, null, null, changeEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<FormColumn> query(TableContext ctx,
|
||||||
|
List<String> queryDisplays,
|
||||||
|
List<FormWhereCondition> conditions,
|
||||||
|
String orderField,
|
||||||
|
String sortType,
|
||||||
|
boolean changeEnum) {
|
||||||
|
|
||||||
fillConditionFields(ctx, conditions);
|
fillConditionFields(ctx, conditions);
|
||||||
List<String> columns = resolveQueryColumns(ctx, queryDisplays);
|
List<String> columns = resolveQueryColumns(ctx, queryDisplays);
|
||||||
@@ -90,12 +99,15 @@ public class FormTableExecutor {
|
|||||||
param.setTableName(ctx.getTableName());
|
param.setTableName(ctx.getTableName());
|
||||||
param.setQueryColumns(columns);
|
param.setQueryColumns(columns);
|
||||||
param.setConditions(conditions);
|
param.setConditions(conditions);
|
||||||
|
param.setOrderField(orderField != null ? orderField : ctx.getTableName().contains("formson") ? "sort" : null);
|
||||||
|
param.setSortType(sortType);
|
||||||
Map<String, Object> sqlMap = generateSql(param);
|
Map<String, Object> sqlMap = generateSql(param);
|
||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
List<Map<String, Object>> rows = agent.resultSetToList();
|
List<Map<String, Object>> rows = agent.resultSetToList();
|
||||||
|
|
||||||
return rows.stream()
|
return rows.stream()
|
||||||
@@ -115,11 +127,21 @@ public class FormTableExecutor {
|
|||||||
public static FormColumn queryOne(TableContext ctx,
|
public static FormColumn queryOne(TableContext ctx,
|
||||||
List<FormWhereCondition> conditions,
|
List<FormWhereCondition> conditions,
|
||||||
boolean changeEnum) {
|
boolean changeEnum) {
|
||||||
|
return queryOne(ctx, conditions, null, null, changeEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FormColumn queryOne(TableContext ctx,
|
||||||
|
List<FormWhereCondition> conditions,
|
||||||
|
String orderField,
|
||||||
|
String sortType,
|
||||||
|
boolean changeEnum) {
|
||||||
|
|
||||||
fillConditionFields(ctx, conditions);
|
fillConditionFields(ctx, conditions);
|
||||||
SqlBuildParam param = new SqlBuildParam();
|
SqlBuildParam param = new SqlBuildParam();
|
||||||
param.setSqlType(SqlType.SELECT);
|
param.setSqlType(SqlType.SELECT);
|
||||||
param.setTableName(ctx.getTableName());
|
param.setTableName(ctx.getTableName());
|
||||||
|
param.setOrderField(orderField != null ? orderField : ctx.getTableName().contains("formson") ? "sort" : null);
|
||||||
|
param.setSortType(sortType);
|
||||||
param.setConditions(conditions);
|
param.setConditions(conditions);
|
||||||
Map<String, Object> sqlMap = generateSql(param);
|
Map<String, Object> sqlMap = generateSql(param);
|
||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
@@ -127,6 +149,7 @@ public class FormTableExecutor {
|
|||||||
try {
|
try {
|
||||||
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
Map<String, Object> row = agent.resultSetToMap();
|
Map<String, Object> row = agent.resultSetToMap();
|
||||||
if (row == null) return null;
|
if (row == null) return null;
|
||||||
|
|
||||||
@@ -148,6 +171,17 @@ public class FormTableExecutor {
|
|||||||
int pageNo,
|
int pageNo,
|
||||||
int pageSize,
|
int pageSize,
|
||||||
boolean changeEnum) {
|
boolean changeEnum) {
|
||||||
|
return pageQuery(ctx, displays, conditions, pageNo, pageSize, null, null, changeEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<FormColumn> pageQuery(TableContext ctx,
|
||||||
|
List<String> displays,
|
||||||
|
List<FormWhereCondition> conditions,
|
||||||
|
int pageNo,
|
||||||
|
int pageSize,
|
||||||
|
String orderField,
|
||||||
|
String sortType,
|
||||||
|
boolean changeEnum) {
|
||||||
|
|
||||||
fillConditionFields(ctx, conditions);
|
fillConditionFields(ctx, conditions);
|
||||||
List<String> columns = resolveQueryColumns(ctx, displays);
|
List<String> columns = resolveQueryColumns(ctx, displays);
|
||||||
@@ -158,12 +192,15 @@ public class FormTableExecutor {
|
|||||||
param.setConditions(conditions);
|
param.setConditions(conditions);
|
||||||
param.setPageNo(pageNo);
|
param.setPageNo(pageNo);
|
||||||
param.setPageSize(pageSize);
|
param.setPageSize(pageSize);
|
||||||
|
param.setOrderField(orderField != null ? orderField : ctx.getTableName().contains("formson") ? "sort" : null);
|
||||||
|
param.setSortType(sortType);
|
||||||
Map<String, Object> sqlMap = generateSql(param);;
|
Map<String, Object> sqlMap = generateSql(param);;
|
||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
List<Map<String, Object>> rows = agent.resultSetToList();
|
List<Map<String, Object>> rows = agent.resultSetToList();
|
||||||
|
|
||||||
return rows.stream()
|
return rows.stream()
|
||||||
@@ -194,6 +231,7 @@ public class FormTableExecutor {
|
|||||||
try {
|
try {
|
||||||
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
String dbName = (String) AppContext.getCache("DATABASE_NAME");
|
String dbName = (String) AppContext.getCache("DATABASE_NAME");
|
||||||
if ("mysql".equalsIgnoreCase(dbName)) {
|
if ("mysql".equalsIgnoreCase(dbName)) {
|
||||||
return (Long) agent.resultSetToMap().get("countnum");
|
return (Long) agent.resultSetToMap().get("countnum");
|
||||||
@@ -226,6 +264,7 @@ public class FormTableExecutor {
|
|||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
try {
|
try {
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
log.error("执行sql为: " + sqlMap.get("sql"));
|
log.error("执行sql为: " + sqlMap.get("sql"));
|
||||||
@@ -249,6 +288,7 @@ public class FormTableExecutor {
|
|||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
try {
|
try {
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.error("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
log.error("执行sql为: " + sqlMap.get("sql"));
|
log.error("执行sql为: " + sqlMap.get("sql"));
|
||||||
@@ -273,6 +313,7 @@ public class FormTableExecutor {
|
|||||||
JDBCAgent agent = new JDBCAgent();
|
JDBCAgent agent = new JDBCAgent();
|
||||||
try {
|
try {
|
||||||
log.info("执行sql为: " + sqlMap.get("sql"));
|
log.info("执行sql为: " + sqlMap.get("sql"));
|
||||||
|
log.info("执行sql参数为: " + JsonUtils.toJSONString(sqlMap.get("params")));
|
||||||
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
return agent.execute((String) sqlMap.get("sql"), (List<Object>) sqlMap.get("params"));
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("执行sql为: " + sqlMap.get("sql"));
|
log.error("执行sql为: " + sqlMap.get("sql"));
|
||||||
@@ -535,25 +576,47 @@ public class FormTableExecutor {
|
|||||||
whereCause.append("(");
|
whereCause.append("(");
|
||||||
}
|
}
|
||||||
String field = c.getFieldName();
|
String field = c.getFieldName();
|
||||||
|
// 字段表达式替换 如 CAST(fieldName AS DECIMAL(10,2))
|
||||||
|
if (c.getFieldExpression() != null) {
|
||||||
|
field = c.getFieldExpression().replace("fieldName", field);
|
||||||
|
}
|
||||||
ClauseFactor factor = c.getClauseFactor();
|
ClauseFactor factor = c.getClauseFactor();
|
||||||
String operator = parseOperator(factor);
|
// 自定义表达式优先
|
||||||
// NULL / NOT NULL
|
if (c.getExpression() != null) {
|
||||||
if (factor.isNullType()) {
|
whereCause.append(c.getExpression());
|
||||||
whereCause.append(field).append(" ").append(operator);
|
if (c.getValue() != null) {
|
||||||
} else if (factor.isInType()) {
|
|
||||||
appendInClause(whereCause, field, operator, c.getValue(), params);
|
|
||||||
} else {
|
|
||||||
String placeholder = "?";
|
|
||||||
// 函数模板(如 TO_DATE(?))
|
|
||||||
if (c.getIndex() != null) {
|
|
||||||
placeholder = c.getIndex();
|
|
||||||
}
|
|
||||||
whereCause.append(field).append(" ").append(operator).append(" ").append(placeholder);
|
|
||||||
if (ClauseFactor.LIKE.equals(factor)) {
|
|
||||||
params.add("%" + c.getValue() + "%");
|
|
||||||
} else {
|
|
||||||
params.add(c.getValue());
|
params.add(c.getValue());
|
||||||
}
|
}
|
||||||
|
if (c.getValues() != null) {
|
||||||
|
params.addAll(c.getValues());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String operator = parseOperator(factor);
|
||||||
|
// NULL / NOT NULL
|
||||||
|
if (factor.isNullType()) {
|
||||||
|
whereCause.append(field).append(" ").append(operator);
|
||||||
|
} else if (factor.isInType()) {
|
||||||
|
appendInClause(whereCause, field, operator, c.getValue(), params);
|
||||||
|
} else if (factor == ClauseFactor.FIND_IN_SET) {
|
||||||
|
whereCause.append("FIND_IN_SET(?, ").append(field).append(")");
|
||||||
|
params.add(c.getValue());
|
||||||
|
} else if (factor == ClauseFactor.BETWEEN) {
|
||||||
|
whereCause.append(field).append(" BETWEEN ? AND ?");
|
||||||
|
params.add(c.getValue());
|
||||||
|
params.add(c.getValues().get(0));
|
||||||
|
} else {
|
||||||
|
String placeholder = "?";
|
||||||
|
// 函数模板(如 TO_DATE(?))
|
||||||
|
if (c.getIndex() != null) {
|
||||||
|
placeholder = c.getIndex();
|
||||||
|
}
|
||||||
|
whereCause.append(field).append(" ").append(operator).append(" ").append(placeholder);
|
||||||
|
if (ClauseFactor.LIKE.equals(factor)) {
|
||||||
|
params.add("%" + c.getValue() + "%");
|
||||||
|
} else {
|
||||||
|
params.add(c.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 右括号
|
// 右括号
|
||||||
if (c.isEndWithBracket()) {
|
if (c.isEndWithBracket()) {
|
||||||
@@ -609,6 +672,9 @@ public class FormTableExecutor {
|
|||||||
case LT: return "<";
|
case LT: return "<";
|
||||||
case LE: return "<=";
|
case LE: return "<=";
|
||||||
case LIKE: return "LIKE";
|
case LIKE: return "LIKE";
|
||||||
|
case FIND_IN_SET: return "FIND_IN_SET";
|
||||||
|
case REGEXP: return "REGEXP";
|
||||||
|
case BETWEEN: return "BETWEEN";
|
||||||
case NULL: return "IS NULL"; // 空值判断
|
case NULL: return "IS NULL"; // 空值判断
|
||||||
case NOT_NULL: return "IS NOT NULL"; // 非空判断
|
case NOT_NULL: return "IS NOT NULL"; // 非空判断
|
||||||
default: throw new UnsupportedOperationException("不支持的运算符: " + factor);
|
default: throw new UnsupportedOperationException("不支持的运算符: " + factor);
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ public class FormWhereCondition {
|
|||||||
private boolean startWithBracket = false; //是否以括号开头生成子条件
|
private boolean startWithBracket = false; //是否以括号开头生成子条件
|
||||||
private boolean endWithBracket = false; //是否以括号结尾结束子条件
|
private boolean endWithBracket = false; //是否以括号结尾结束子条件
|
||||||
private String index;
|
private String index;
|
||||||
|
private String expression; //自定义SQL表达式 如 ROUND(CAST(fieldName AS DECIMAL(10,2)), 2) > ?
|
||||||
|
private String fieldExpression; //字段表达式 如 CAST(fieldName AS DECIMAL(10,2)),fieldName会被替换为实际字段名
|
||||||
|
|
||||||
public FormWhereCondition() {
|
public FormWhereCondition() {
|
||||||
this.values = new ArrayList<>();
|
this.values = new ArrayList<>();
|
||||||
@@ -38,6 +40,12 @@ public class FormWhereCondition {
|
|||||||
this.value = value;
|
this.value = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public FormWhereCondition between(Object from, Object to) {
|
||||||
|
this.clauseFactor = ClauseFactor.BETWEEN;
|
||||||
|
this.value = from;
|
||||||
|
this.values.add(to);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public FormWhereCondition clauseFactor(ClauseFactor clauseFactor) {
|
public FormWhereCondition clauseFactor(ClauseFactor clauseFactor) {
|
||||||
this.clauseFactor = clauseFactor;
|
this.clauseFactor = clauseFactor;
|
||||||
return this;
|
return this;
|
||||||
@@ -67,6 +75,16 @@ public class FormWhereCondition {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FormWhereCondition expression(String expression) {
|
||||||
|
this.expression = expression;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FormWhereCondition fieldExpression(String fieldExpression) {
|
||||||
|
this.fieldExpression = fieldExpression;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public FormWhereCondition(Object value, ClauseFactor clauseFactor) {
|
public FormWhereCondition(Object value, ClauseFactor clauseFactor) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
@@ -139,4 +157,20 @@ public class FormWhereCondition {
|
|||||||
public void setValues(List<Object> values) {
|
public void setValues(List<Object> values) {
|
||||||
this.values = values;
|
this.values = values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getExpression() {
|
||||||
|
return expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpression(String expression) {
|
||||||
|
this.expression = expression;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldExpression() {
|
||||||
|
return fieldExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldExpression(String fieldExpression) {
|
||||||
|
this.fieldExpression = fieldExpression;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user