fdfdcbeee2e3e1da94906425b198f660865ec592.svn-base 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package org.jeecg.modules.online.cgreport.util;
  2. import java.text.MessageFormat;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.Map.Entry;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9. import javax.servlet.http.HttpServletRequest;
  10. import org.jeecg.common.system.query.QueryGenerator;
  11. import org.jeecg.common.util.oConvertUtils;
  12. import lombok.extern.slf4j.Slf4j;
  13. @Slf4j
  14. public class SqlUtil {
  15. public static final String a = "select * from ( {0}) sel_tab00 limit {1},{2}";
  16. public static final String b = "select * from ( {0}) sel_tab00 limit {2} offset {1}";
  17. public static final String c = "select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}";
  18. public static final String d = "select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}";
  19. public static final String e = "select distinct table_name from information_schema.columns where table_schema = {0}";
  20. public static final String f = "SELECT distinct c.relname AS table_name FROM pg_class c";
  21. public static final String g = "select distinct colstable.table_name as table_name from user_tab_cols colstable";
  22. public static final String h = "select distinct c.name as table_name from sys.objects c";
  23. public static final String i = "select column_name from information_schema.columns where table_name = {0} and table_schema = {1}";
  24. public static final String j = "select table_name from information_schema.columns where table_name = {0}";
  25. public static final String k = "select column_name from all_tab_columns where table_name ={0}";
  26. public static final String l = "select name from syscolumns where id={0}";
  27. public SqlUtil() {
  28. }
  29. public static String a(String var0, Map var1) {
  30. StringBuilder var2 = new StringBuilder();
  31. var2.append("SELECT t.* FROM ( ");
  32. var2.append(var0 + " ");
  33. var2.append(") t ");
  34. if (var1 != null && var1.size() >= 1) {
  35. var2.append("WHERE 1=1 ");
  36. Iterator var3 = var1.keySet().iterator();
  37. while(var3.hasNext()) {
  38. String var4 = String.valueOf(var3.next());
  39. String var5 = String.valueOf(var1.get(var4));
  40. if (oConvertUtils.isNotEmpty(var5)) {
  41. var2.append(" AND ");
  42. var2.append(" " + var4 + var5);
  43. }
  44. }
  45. }
  46. return var2.toString();
  47. }
  48. public static String b(String var0, Map var1) {
  49. String var2 = a(var0, var1);
  50. var2 = "SELECT COUNT(*) COUNT FROM (" + var2 + ") t2";
  51. return var2;
  52. }
  53. public static String a(String var0, Map var1, int var2, int var3) {
  54. String var4 = "jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false";
  55. int var5 = (var2 - 1) * var3;
  56. String[] var6 = new String[]{var0, var5 + "", var3 + ""};
  57. if (var4.indexOf("MYSQL") != -1) {
  58. var0 = MessageFormat.format("select * from ( {0}) sel_tab00 limit {1},{2}", var6);
  59. } else if (var4.indexOf("POSTGRESQL") != -1) {
  60. var0 = MessageFormat.format("select * from ( {0}) sel_tab00 limit {2} offset {1}", var6);
  61. } else {
  62. int var7 = (var2 - 1) * var3;
  63. int var8 = var7 + var3;
  64. var6[2] = Integer.toString(var7);
  65. var6[1] = Integer.toString(var8);
  66. if (var4.indexOf("ORACLE") != -1) {
  67. var0 = MessageFormat.format("select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}", var6);
  68. } else if (var4.indexOf("SQLSERVER") != -1) {
  69. var6[0] = var0.substring(c(var0));
  70. var0 = MessageFormat.format("select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}", var6);
  71. }
  72. }
  73. return var0;
  74. }
  75. public static String a(String var0, String var1, String var2, Map var3, int var4, int var5) {
  76. var2 = a(var2, var3);
  77. int var6 = (var4 - 1) * var5;
  78. String[] var7 = new String[]{var2, var6 + "", var5 + ""};
  79. String var8 = "";
  80. if ("MYSQL".equalsIgnoreCase(var8)) {
  81. var2 = MessageFormat.format("select * from ( {0}) sel_tab00 limit {1},{2}", var7);
  82. } else if ("POSTGRESQL".equalsIgnoreCase(var8)) {
  83. var2 = MessageFormat.format("select * from ( {0}) sel_tab00 limit {2} offset {1}", var7);
  84. } else {
  85. int var9 = (var4 - 1) * var5;
  86. int var10 = var9 + var5;
  87. var7[2] = Integer.toString(var9);
  88. var7[1] = Integer.toString(var10);
  89. if ("ORACLE".equalsIgnoreCase(var8)) {
  90. var2 = MessageFormat.format("select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}", var7);
  91. } else if ("SQLSERVER".equalsIgnoreCase(var8)) {
  92. var7[0] = var2.substring(c(var2));
  93. var2 = MessageFormat.format("select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}", var7);
  94. }
  95. }
  96. return var2;
  97. }
  98. private static int c(String var0) {
  99. int var1 = var0.toLowerCase().indexOf("select");
  100. int var2 = var0.toLowerCase().indexOf("select distinct");
  101. return var1 + (var2 == var1 ? 15 : 6);
  102. }
  103. public static String a(String var0, String... var1) {
  104. if (oConvertUtils.isNotEmpty(var0)) {
  105. if ("MYSQL".equals(var0)) {
  106. return MessageFormat.format("select distinct table_name from information_schema.columns where table_schema = {0}", var1);
  107. }
  108. if ("ORACLE".equals(var0)) {
  109. return "select distinct colstable.table_name as table_name from user_tab_cols colstable";
  110. }
  111. if ("POSTGRESQL".equals(var0)) {
  112. return "SELECT distinct c.relname AS table_name FROM pg_class c";
  113. }
  114. if ("SQLSERVER".equals(var0)) {
  115. return "select distinct c.name as table_name from sys.objects c";
  116. }
  117. }
  118. return null;
  119. }
  120. public static String b(String var0, String... var1) {
  121. if (oConvertUtils.isNotEmpty(var0)) {
  122. if ("MYSQL".equals(var0)) {
  123. return MessageFormat.format("select column_name from information_schema.columns where table_name = {0} and table_schema = {1}", var1);
  124. }
  125. if ("ORACLE".equals(var0)) {
  126. return MessageFormat.format("select column_name from all_tab_columns where table_name ={0}", var1);
  127. }
  128. if ("POSTGRESQL".equals(var0)) {
  129. return MessageFormat.format("select table_name from information_schema.columns where table_name = {0}", var1);
  130. }
  131. if ("SQLSERVER".equals(var0)) {
  132. return MessageFormat.format("select name from syscolumns where id={0}", var1);
  133. }
  134. }
  135. return null;
  136. }
  137. public static String a(String var0) {
  138. var0 = var0.toLowerCase();
  139. String var1 = "(\\w|\\.)+ *\\S+ *\\S*\\$\\{\\w+\\}\\S*";
  140. Pattern var2 = Pattern.compile(var1);
  141. for(Matcher var3 = var2.matcher(var0); var3.find(); log.info("${}替换后结果 ==>" + var0)) {
  142. String var4 = var3.group();
  143. log.info("${}匹配带参SQL片段 ==>" + var4);
  144. if (var4.indexOf("where") != -1) {
  145. var0 = var0.replace(var4, "where 1=1");
  146. } else if (var4.indexOf("and") != -1) {
  147. var0 = var0.replace(var4, "and 1=1");
  148. } else if (var4.indexOf("or") != -1) {
  149. var0 = var0.replace(var4, "or 1=1");
  150. } else {
  151. var0 = var0.replace(var4, "1=1");
  152. }
  153. }
  154. var0 = var0.replaceAll("(?i)AND *1=1", "");
  155. return var0;
  156. }
  157. public static void main(String[] args) {
  158. String var1 = "select * from sys_user where id ='${id}' and del_flag= ${flag}";
  159. System.out.println(a(var1));
  160. }
  161. public static Map<String, Object> getParams(HttpServletRequest request) {
  162. Map httpParams = request.getParameterMap();
  163. HashMap var2 = new HashMap();
  164. Iterator var3 = httpParams.entrySet().iterator();
  165. String var5 = "";
  166. String var6 = "";
  167. for(Object var7 = null; var3.hasNext(); var2.put(var5, var6)) {
  168. Entry var4 = (Entry)var3.next();
  169. var5 = (String)var4.getKey();
  170. var7 = var4.getValue();
  171. if (!"_t".equals(var5) && null != var7) {
  172. if (!(var7 instanceof String[])) {
  173. var6 = var7.toString();
  174. } else {
  175. String[] var8 = (String[])((String[])var7);
  176. for(int var9 = 0; var9 < var8.length; ++var9) {
  177. var6 = var8[var9] + ",";
  178. }
  179. var6 = var6.substring(0, var6.length() - 1);
  180. }
  181. } else {
  182. var6 = "";
  183. }
  184. }
  185. return var2;
  186. }
  187. public static String transSql(String cgSql) {
  188. String sql = QueryGenerator.convertSystemVariables(cgSql);
  189. String configAuth = QueryGenerator.getAllConfigAuth();
  190. return cgSql.toLowerCase().indexOf("where") > 0 ? sql + configAuth : sql + " where 1=1 " + configAuth;
  191. }
  192. }