DBHelper.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.kym.admin.utils;
  2. import com.kym.DbUtil;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.ResultSetMetaData;
  10. import java.sql.SQLException;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * 数据库链接工具
  17. */
  18. public class DBHelper implements AutoCloseable {
  19. private Logger logger = LoggerFactory.getLogger(DBHelper.class);
  20. public final String DIALECT_MYSQL = "mysql";
  21. public final String DIALECT_PGSQL = "postgresql";
  22. private Connection conn = null;
  23. private PreparedStatement pst = null;
  24. public void open(String url, String username, String password) throws Exception {
  25. Class.forName("com.mysql.cj.jdbc.Driver");
  26. this.conn = DriverManager.getConnection(url, username, password);
  27. }
  28. public List<Map<String, Object>> executeQueryList(String sql, Object... params) {
  29. List<Map<String, Object>> result = new ArrayList<>();
  30. ResultSet resultSet = null;
  31. try {
  32. logger.info("executeQueryList sql:\n{},params:\n{}", sql, params);
  33. pst = this.conn.prepareStatement(sql);
  34. DbUtil.setParameter(pst, params);
  35. resultSet = pst.executeQuery();
  36. ResultSetMetaData metaData = resultSet.getMetaData();
  37. int columnCount = metaData.getColumnCount();
  38. while (resultSet.next()) {
  39. Map<String, Object> data = new HashMap<>();
  40. for (int i = 1; i <= columnCount; i++) {
  41. String columnName = metaData.getColumnLabel(i).toLowerCase();
  42. data.put(columnName, resultSet.getString(i));
  43. }
  44. result.add(data);
  45. }
  46. } catch (Exception e) {
  47. logger.error("DBHelper executeQueryList error", e);
  48. } finally {
  49. if (null != resultSet) {
  50. try {
  51. resultSet.close();
  52. } catch (SQLException e) {
  53. logger.error("DBHelper executeQueryList close error", e);
  54. }
  55. }
  56. }
  57. return result;
  58. }
  59. public Map<String, Object> executeQuery(String sql, Object... params) throws Exception {
  60. Map<String, Object> result = new HashMap<>();
  61. ResultSet resultSet = null;
  62. logger.info("executeQuery sql:\n{}", sql);
  63. try {
  64. pst = this.conn.prepareStatement(sql);//准备执行语句
  65. DbUtil.setParameter(pst, params);
  66. resultSet = pst.executeQuery();
  67. ResultSetMetaData metaData = resultSet.getMetaData();
  68. int columnCount = metaData.getColumnCount();
  69. while (resultSet.next()) {
  70. for (int i = 1; i <= columnCount; i++) {
  71. String columnName = metaData.getColumnLabel(i).toLowerCase();
  72. result.put(columnName, resultSet.getString(i));
  73. }
  74. }
  75. } catch (Exception e) {
  76. logger.error("DBHelper executeQuery error", e);
  77. } finally {
  78. if (null != resultSet) {
  79. try {
  80. resultSet.close();
  81. } catch (SQLException e) {
  82. logger.error("DBHelper executeQuery close error", e);
  83. }
  84. }
  85. }
  86. return result;
  87. }
  88. public void executeUpdate(String sql, Object... params) throws Exception {
  89. try {
  90. logger.info("executeUpdate sql:\n{}", sql);
  91. pst = this.conn.prepareStatement(sql);//准备执行语句
  92. DbUtil.setParameter(pst, params);
  93. int i = pst.executeUpdate();
  94. logger.info("DBHelper executeUpdate rows:{}", i);
  95. } catch (Exception e) {
  96. logger.error("DBHelper executeUpdate error", e);
  97. }
  98. }
  99. //关闭
  100. public void closeDb() {
  101. try {
  102. if (null != pst) {
  103. if (!pst.isClosed()) {
  104. pst.close();
  105. logger.info("close preparedStatement...");
  106. }
  107. }
  108. if (null != conn) {
  109. if (!conn.isClosed()) {
  110. conn.close();
  111. logger.info("close connection..");
  112. }
  113. }
  114. } catch (SQLException e) {
  115. logger.error(e.getMessage(), e);
  116. }
  117. }
  118. @Override
  119. public void close() throws Exception {
  120. closeDb();
  121. }
  122. }