|
@@ -6,7 +6,6 @@ import org.hibernate.transform.Transformers;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.persistence.EntityManager;
|
|
@@ -27,22 +26,6 @@ public class SqlUtil {
|
|
|
@Autowired
|
|
|
private EntityManager entityManager;
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果转换成map,支持分页
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public PageInfo execSqlForMapPageInfo(String sql, Integer curPage, Integer pageSize, String... arguments) {
|
|
|
- if (sql == null || curPage == null || pageSize == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return (PageInfo) execSqlTrans(sql, null, 1, true, curPage, pageSize, arguments);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果转换成map,支持分页
|
|
|
*
|
|
@@ -59,54 +42,6 @@ public class SqlUtil {
|
|
|
return (PageInfo) execSqlTrans(sql, null, 1, true, curPage, pageSize, arguments);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql 执行count
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param execSql
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Integer getTotalCountCustom(String sql, boolean execSql, Object... arguments) {
|
|
|
- try {
|
|
|
- List<Object> args = new ArrayList<>();
|
|
|
- for (Object s : arguments) {
|
|
|
- args.add(s);
|
|
|
- }
|
|
|
- String countSql = null;
|
|
|
- if (!execSql) {
|
|
|
- countSql = getCountSqlWithOutDistinct(sql);
|
|
|
- } else {
|
|
|
- countSql = sql;
|
|
|
- }
|
|
|
- Query query = entityManager.createNativeQuery(countSql);
|
|
|
- for (int i = 0; i < args.size(); i++) {
|
|
|
- query.setParameter(i + 1, args.get(i));
|
|
|
- }
|
|
|
- return Integer.parseInt(query.getSingleResult().toString());
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 自定义sql查询
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
- * @param total
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public PageInfo execSqlForMapPageInfoCustom(String sql, Integer curPage, Integer pageSize, Integer total, Object... arguments) {
|
|
|
- if (sql == null || curPage == null || pageSize == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return (PageInfo) execSqlTrans(sql, null, 1, true, curPage, pageSize, total, arguments);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果转换成map
|
|
|
*
|
|
@@ -114,7 +49,7 @@ public class SqlUtil {
|
|
|
* @param arguments
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<T> execSqlForMap(String sql, String... arguments) {
|
|
|
+ public List<T> execSqlForMap(String sql, Object... arguments) {
|
|
|
if (sql == null || arguments == null) {
|
|
|
throw new NullPointerException();
|
|
|
}
|
|
@@ -129,30 +64,14 @@ public class SqlUtil {
|
|
|
* @param arguments
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<T> execSqlForMap(String sql, Object... arguments) {
|
|
|
+ public List<T> execSqlForMapNative(String sql, Object... arguments) {
|
|
|
if (sql == null || arguments == null) {
|
|
|
throw new NullPointerException();
|
|
|
}
|
|
|
- Query query = (Query) execSqlTrans(sql, null, 1, false, null, null, arguments);
|
|
|
+ Query query = (Query) execSqlTrans(sql, null, 1, arguments);
|
|
|
return query.getResultList();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果按顺序排进List,支持分页
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public PageInfo execSqlForListPageInfo(String sql, Integer curPage, Integer pageSize, String... arguments) {
|
|
|
- if (sql == null || curPage == null || pageSize == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return (PageInfo) execSqlTrans(sql, null, 2, true, curPage, pageSize, arguments);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果按顺序排进List,支持分页
|
|
|
*
|
|
@@ -169,21 +88,6 @@ public class SqlUtil {
|
|
|
return (PageInfo) execSqlTrans(sql, null, 2, true, curPage, pageSize, arguments);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果按顺序排进List
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<T> execSqlForList(String sql, String... arguments) {
|
|
|
- if (sql == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- Query query = (Query) execSqlTrans(sql, null, 2, false, null, null, arguments);
|
|
|
- return query.getResultList();
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果按顺序排进List
|
|
|
*
|
|
@@ -199,23 +103,6 @@ public class SqlUtil {
|
|
|
return query.getResultList();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果通过setter方法注入到指定的对像属性中,支持分页
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param cla
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public PageInfo execSqlForAliasToBeanPageInfo(String sql, Class cla, Integer curPage, Integer pageSize, String... arguments) {
|
|
|
- if (sql == null || cla == null || curPage == null || pageSize == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return (PageInfo) execSqlTrans(sql, cla, 3, true, curPage, pageSize, arguments);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果通过setter方法注入到指定的对像属性中,支持分页
|
|
|
*
|
|
@@ -233,22 +120,6 @@ public class SqlUtil {
|
|
|
return (PageInfo) execSqlTrans(sql, cla, 3, true, curPage, pageSize, arguments);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果通过setter方法注入到指定的对像属性中
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param cla
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<T> execSqlForAliasToBean(String sql, Class cla, String... arguments) {
|
|
|
- if (sql == null || cla == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- Query query = (Query) execSqlTrans(sql, cla, 3, false, null, null, arguments);
|
|
|
- return query.getResultList();
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 执行sql 把结果通过setter方法注入到指定的对像属性中
|
|
|
*
|
|
@@ -288,46 +159,6 @@ public class SqlUtil {
|
|
|
return query.getResultList();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 执行sql 把结果转换成map
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<T> execSqlForMap(String sql, Class cla) {
|
|
|
- Query query = entityManager.createNativeQuery(sql);
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
|
|
- return query.getResultList();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 执行sql 把结果按顺序排进Class bean
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<T> execSqlForAliasToBean(String sql, Class cla) {
|
|
|
- Query query = entityManager.createNativeQuery(sql, cla);
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(cla));
|
|
|
- return query.getResultList();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * sql 拼接and条件
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param fields
|
|
|
- * @param fieldValues
|
|
|
- * @param opers
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String sqlConditionAnd(String sql, String[] fields, String[] fieldValues, String[] opers) {
|
|
|
- if (sql == null || fields == null || fieldValues == null || opers == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return sqlConditionTrans(sql, "and", fields, fieldValues, opers);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 拼接and条件
|
|
|
*
|
|
@@ -374,22 +205,6 @@ public class SqlUtil {
|
|
|
return new StringBuffer(sql).append(" or FIND_IN_SET ").append("(" + fieldValue + "," + field + ")").toString();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql 拼接or条件
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param fields
|
|
|
- * @param fieldValues
|
|
|
- * @param opers
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String sqlConditionOr(String sql, String[] fields, String[] fieldValues, String[] opers) {
|
|
|
- if (sql == null || fields == null || fieldValues == null || opers == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- return sqlConditionTrans(sql, "or", fields, fieldValues, opers);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 拼接or条件
|
|
|
*
|
|
@@ -480,29 +295,6 @@ public class SqlUtil {
|
|
|
return new StringBuffer(sql).append(" union all ").toString();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql 条件转换
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param conditionStr
|
|
|
- * @param fields
|
|
|
- * @param fieldValues
|
|
|
- * @param opers
|
|
|
- * @return
|
|
|
- */
|
|
|
- private String sqlConditionTrans(String sql, String conditionStr, String[] fields, String[] fieldValues, String[] opers) {
|
|
|
- StringBuffer stringBuffer = new StringBuffer(sql);
|
|
|
- try {
|
|
|
- for (int i = 0; i < fields.length; i++) {
|
|
|
- stringBuffer.append(" " + conditionStr + " ").append(" " + fields[i] + " ").append(" " + opers[i] + " ").append("'" + fieldValues[i] + "'");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- return stringBuffer.toString();
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 条件转换
|
|
|
*
|
|
@@ -517,7 +309,11 @@ public class SqlUtil {
|
|
|
StringBuffer stringBuffer = new StringBuffer(sql);
|
|
|
try {
|
|
|
for (int i = 0; i < fields.length; i++) {
|
|
|
- stringBuffer.append(" " + conditionStr + " ").append(" " + fields[i] + " ").append(" " + opers[i] + " ").append(fieldValues[i]);
|
|
|
+ if (fieldValues[i] instanceof String) {
|
|
|
+ stringBuffer.append(" " + conditionStr + " ").append(" " + fields[i] + " ").append(" " + opers[i] + " ").append("'" + fieldValues[i] + "'");
|
|
|
+ } else {
|
|
|
+ stringBuffer.append(" " + conditionStr + " ").append(" " + fields[i] + " ").append(" " + opers[i] + " ").append(fieldValues[i]);
|
|
|
+ }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@@ -526,36 +322,6 @@ public class SqlUtil {
|
|
|
return stringBuffer.toString();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql 占位符替换
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param str
|
|
|
- * @param fromIndex
|
|
|
- * @param count
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- private String searchStrAndRep(String sql, String str, int fromIndex, int count, String... arguments) {
|
|
|
- if (sql == null || str == null || arguments == null) {
|
|
|
- throw new NullPointerException();
|
|
|
- }
|
|
|
- try {
|
|
|
- int index = sql.indexOf(str, fromIndex);
|
|
|
- if (index != -1) {
|
|
|
- StringBuilder stringBuilder = new StringBuilder(sql);
|
|
|
- stringBuilder = new StringBuilder(stringBuilder.substring(0, index)).append(stringBuilder.replace(0, index + 1, "'" + arguments[count] + "'"));
|
|
|
- return searchStrAndRep(stringBuilder.toString(), str, index + 1, count + 1, arguments);
|
|
|
- } else {
|
|
|
- LOGGER.info("execSql:" + sql);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- return sql;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 占位符替换
|
|
|
*
|
|
@@ -574,7 +340,11 @@ public class SqlUtil {
|
|
|
int index = sql.indexOf(str, fromIndex);
|
|
|
if (index != -1) {
|
|
|
StringBuilder stringBuilder = new StringBuilder(sql);
|
|
|
- stringBuilder = new StringBuilder(stringBuilder.substring(0, index)).append(stringBuilder.replace(0, index + 1, String.valueOf(arguments[count])));
|
|
|
+ if (arguments[count] instanceof String) {
|
|
|
+ stringBuilder = new StringBuilder(stringBuilder.substring(0, index)).append(stringBuilder.replace(0, index + 1, "'" + arguments[count] + "'"));
|
|
|
+ } else {
|
|
|
+ stringBuilder = new StringBuilder(stringBuilder.substring(0, index)).append(stringBuilder.replace(0, index + 1, String.valueOf(arguments[count])));
|
|
|
+ }
|
|
|
return searchStrAndRep(stringBuilder.toString(), str, index + 1, count + 1, arguments);
|
|
|
} else {
|
|
|
LOGGER.info("execSql:" + sql);
|
|
@@ -586,10 +356,6 @@ public class SqlUtil {
|
|
|
return sql;
|
|
|
}
|
|
|
|
|
|
- public ResponseEntity<T> sqlTransEntity() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 执行count
|
|
|
*
|
|
@@ -635,59 +401,6 @@ public class SqlUtil {
|
|
|
return newsql;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql 结果trans转换
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param cla
|
|
|
- * @param type
|
|
|
- * @param isShowPage
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Object execSqlTrans(String sql, Class cla, int type, boolean isShowPage, Integer curPage, Integer pageSize, String... arguments) {
|
|
|
- Query query = null;
|
|
|
- try {
|
|
|
- List<String> args = new ArrayList<String>();
|
|
|
- for (String s : arguments) {
|
|
|
- args.add(s);
|
|
|
- }
|
|
|
- Integer total = getTotalCount(sql.toString(), args);
|
|
|
- total = total == null ? 0 : total;
|
|
|
- query = entityManager.createNativeQuery(sql.toString());
|
|
|
- switch (type) {
|
|
|
- case 2:
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.TO_LIST);
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(cla));
|
|
|
- break;
|
|
|
- default:
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
|
|
- break;
|
|
|
- }
|
|
|
- for (int i = 0; i < args.size(); i++) {
|
|
|
- query.setParameter(i + 1, args.get(i));
|
|
|
- }
|
|
|
- sqlPrint(sql, arguments);
|
|
|
- if (isShowPage) {
|
|
|
- //设置分页信息
|
|
|
- PageInfo pageInfo = new PageInfo();
|
|
|
- query.setMaxResults(pageSize);
|
|
|
- query.setFirstResult(curPage * pageSize);
|
|
|
- pageInfo.setTotal(total);
|
|
|
- pageInfo.setList(query.getResultList());
|
|
|
- return pageInfo;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- return query;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql 结果trans转换
|
|
|
*
|
|
@@ -707,9 +420,9 @@ public class SqlUtil {
|
|
|
for (Object s : arguments) {
|
|
|
args.add(s);
|
|
|
}
|
|
|
- Integer total = getTotalCount(sql.toString(), args);
|
|
|
+ Integer total = getTotalCount(sql, args);
|
|
|
total = total == null ? 0 : total;
|
|
|
- query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query = entityManager.createNativeQuery(sql);
|
|
|
switch (type) {
|
|
|
case 2:
|
|
|
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.TO_LIST);
|
|
@@ -747,20 +460,17 @@ public class SqlUtil {
|
|
|
* @param sql
|
|
|
* @param cla
|
|
|
* @param type
|
|
|
- * @param isShowPage
|
|
|
- * @param curPage
|
|
|
- * @param pageSize
|
|
|
* @param arguments
|
|
|
* @return
|
|
|
*/
|
|
|
- private Object execSqlTrans(String sql, Class cla, int type, boolean isShowPage, Integer curPage, Integer pageSize, Integer total, Object... arguments) {
|
|
|
+ private Object execSqlTrans(String sql, Class cla, int type, Object... arguments) {
|
|
|
Query query = null;
|
|
|
try {
|
|
|
List<Object> args = new ArrayList<>();
|
|
|
for (Object s : arguments) {
|
|
|
args.add(s);
|
|
|
}
|
|
|
- query = entityManager.createNativeQuery(sql.toString());
|
|
|
+ query = entityManager.createNativeQuery(sql);
|
|
|
switch (type) {
|
|
|
case 2:
|
|
|
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.TO_LIST);
|
|
@@ -776,15 +486,6 @@ public class SqlUtil {
|
|
|
query.setParameter(i + 1, args.get(i));
|
|
|
}
|
|
|
sqlPrint(sql, arguments);
|
|
|
- if (isShowPage) {
|
|
|
- //设置分页信息
|
|
|
- PageInfo pageInfo = new PageInfo();
|
|
|
- query.setMaxResults(pageSize);
|
|
|
- query.setFirstResult(curPage * pageSize);
|
|
|
- pageInfo.setTotal(total);
|
|
|
- pageInfo.setList(query.getResultList());
|
|
|
- return pageInfo;
|
|
|
- }
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
throw new RuntimeException(e);
|
|
@@ -792,27 +493,6 @@ public class SqlUtil {
|
|
|
return query;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * sql打印,替代占位符
|
|
|
- *
|
|
|
- * @param sql
|
|
|
- * @param arguments
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String sqlPrint(String sql, String... arguments) {
|
|
|
- try {
|
|
|
- int lastIndexOrder = sql.lastIndexOf("?");
|
|
|
- if (lastIndexOrder == -1) {
|
|
|
- LOGGER.error("没有?参数");
|
|
|
- } else {
|
|
|
- return searchStrAndRep(sql, "?", 0, 0, arguments);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return sql;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* sql打印,替代占位符
|
|
|
*
|