ImplementSqlService.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package com.server;
  2. import com.dao.DataColumnMapper;
  3. import com.dao.DataConnectorMapper;
  4. import com.model.bo.ToSql;
  5. import com.model.po.Databases;
  6. import com.model.pojo.RepCode;
  7. import com.model.pojo.RepEntity;
  8. import com.model.vo.dataVo.ColumnTypeInfo;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import java.math.BigDecimal;
  12. import java.sql.Connection;
  13. import java.sql.DriverManager;
  14. import java.sql.SQLException;
  15. import java.util.*;
  16. @Service
  17. public class ImplementSqlService {
  18. @Autowired
  19. DataColumnMapper dataColumnMapper;
  20. @Autowired
  21. DataConnectorMapper dataConnectorMapper;
  22. /*
  23. 执行数据源
  24. */
  25. public RepEntity implementSql(ToSql toSql) {
  26. String sqlStr = toSql.getStrSql();
  27. System.out.println(sqlStr);
  28. if ("".equals(sqlStr) || sqlStr == null) {
  29. return new RepEntity(RepCode.ChartsNameNull);
  30. }
  31. List<LinkedHashMap<String, Object>> columnData = dataColumnMapper.getColumn(sqlStr.toUpperCase());
  32. LinkedHashMap<String, String> tarValue = getColumnType(columnData);
  33. //取列名
  34. List<ColumnTypeInfo> isList = new ArrayList<>();
  35. LinkedHashMap<String, Object> columnDataKey = columnData.get(0);
  36. Iterator<String> iter = columnDataKey.keySet().iterator();
  37. while (iter.hasNext()){
  38. String key = iter.next();
  39. String vaul = tarValue.get(key);
  40. ColumnTypeInfo columnTypeInfo = new ColumnTypeInfo();
  41. columnTypeInfo.setColumnName(key);
  42. columnTypeInfo.setColumnType(vaul);
  43. isList.add(columnTypeInfo);
  44. }
  45. return new RepEntity(RepCode.success,isList);
  46. }
  47. /*
  48. 判断列类型
  49. */
  50. public LinkedHashMap<String, String> getColumnType(List<LinkedHashMap<String, Object>> columnData){
  51. LinkedHashMap<String, String> tarValue = new LinkedHashMap<>();
  52. for (int i = 0; i < columnData.size(); i++){
  53. LinkedHashMap<String, Object> columnDataMap = columnData.get(i);
  54. Iterator<String> cm = columnDataMap.keySet().iterator();
  55. while (cm.hasNext()){
  56. String key = cm.next();
  57. if (tarValue.containsKey(key)){
  58. continue;
  59. }else {
  60. Object value = columnDataMap.get(key);
  61. if (value == null) {
  62. continue;
  63. }else {
  64. String values = getType(value);
  65. tarValue.put(key, values);
  66. }
  67. if (tarValue.size() == columnDataMap.size()){
  68. break;
  69. }
  70. }
  71. }
  72. }
  73. return tarValue;
  74. }
  75. /*
  76. 判断值类型
  77. */
  78. public String getType(Object obj){
  79. if(obj instanceof String){
  80. return "String";
  81. }else if (obj instanceof Double){
  82. return "Double";
  83. }else if (obj instanceof Integer){
  84. return "Integer";
  85. }else if (obj instanceof Date){
  86. return "Date";
  87. }else if (obj instanceof Boolean){
  88. return "Boolean";
  89. }else if(obj instanceof Byte){
  90. return "Byte";
  91. }else if (obj instanceof Short){
  92. return "Short";
  93. }else if (obj instanceof BigDecimal){
  94. return "BigDecimal";
  95. }else if (obj instanceof Object){
  96. return "Object";
  97. }else {
  98. return "";
  99. }
  100. }
  101. /*
  102. 判断数据库连接
  103. */
  104. public RepEntity connectTest(Databases databases) {
  105. String password = "";
  106. String passwords = databases.getPassWord();
  107. int id = databases.getId();
  108. String pw = dataConnectorMapper.getBasesById(id);
  109. if (passwords != null && !"".equals(passwords)){
  110. password = passwords;
  111. }else {
  112. password = pw;
  113. }
  114. String url = "jdbc:oracle:thin:@" + databases.getAddrass() + ":" + databases.getPort() + ":" + databases
  115. .getDataName();
  116. String username = databases.getUserName();
  117. // String password = databases.getPassWord();
  118. Connection con = null;
  119. try {
  120. DriverManager.setLoginTimeout(8);
  121. con = DriverManager.getConnection(url, username, password);
  122. System.out.println("数据库连接成功");
  123. con.close();
  124. } catch (SQLException se) {
  125. System.out.println("数据库连接失败!");
  126. se.printStackTrace();
  127. return new RepEntity(RepCode.Null);
  128. }
  129. return new RepEntity(RepCode.success);
  130. }
  131. }