package com.zy.crm.common.service; import com.core.common.Cools; import com.zy.crm.common.properties.DbProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @Service @SuppressWarnings("all") public class DbSqlServer { // private Connection conn; private PreparedStatement pstm = null; private ResultSet rs = null; @Autowired private DbProperties dbProperties; /*****************************************************************************/ /********************************** 封装 **********************************/ /*****************************************************************************/ /** * 查询 */ public List select(String sql, Class cls) { List> result = executeQuery(sql); List list = new ArrayList<>(); if (null != result) { for (Map entity : result) { list.add(Cools.conver(entity, cls)); } } return list; } public List> select(String sql) { return executeQuery(sql); } /** * 修改 */ public int update(String sql) { return executeUpdate(sql); } /*****************************************************************************/ /********************************* 核心层 *********************************/ /*****************************************************************************/ private List> executeQuery(String sql) { Connection conn = null; try { conn = getConn(); pstm = conn.prepareStatement(sql); rs = pstm.executeQuery(); return convertList(rs); } catch (Exception e) { e.printStackTrace(); return null; } finally { release(); if (conn != null) { try { conn.close(); conn = null; } catch (SQLException e) { e.printStackTrace(); } } } } public Number executeQueryCount(String sql, String column) { Number value = 0; Connection conn = null; try { conn = getConn(); pstm = conn.prepareStatement(sql); rs = pstm.executeQuery(); while (rs.next()) { value = (Number) rs.getInt(column); } return value; } catch (Exception e) { e.printStackTrace(); return 0; } finally { release(); if (conn != null) { try { conn.close(); conn = null; } catch (SQLException e) { e.printStackTrace(); } } } } private int executeUpdate(String sql) { Connection conn = null; try { conn = getConn(); if(null != conn) { pstm = conn.prepareStatement(sql); } else { log.error("更新DB中间表失败===>>" + sql); } return pstm.executeUpdate(); } catch (Exception e) { e.printStackTrace(); log.error("更新DB中间表失败===>>" + sql); return 0; } finally { release(); if (conn != null) { try { conn.close(); conn = null; } catch (SQLException e) { e.printStackTrace(); } } } } private static List> convertList(ResultSet rs) throws SQLException { List> list = new ArrayList<>(); ResultSetMetaData md = rs.getMetaData(); int columnCount = md.getColumnCount(); while (rs.next()) { Map rowData = new HashMap<>(); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } return list; } //synchronized public Connection getConn() throws SQLException { Connection conn = null; try { Class.forName(dbProperties.getDriver_class_name()).newInstance(); conn = DriverManager.getConnection(dbProperties.getUr(), dbProperties.getUsername(), dbProperties.getPassword()); } catch (Exception e) { log.error("获取DB数据库连接失败"); e.printStackTrace(); throw new RuntimeException("获取DB数据库连接失败"); } return conn; } private void release() { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstm != null) { try { pstm.close(); } catch (SQLException e) { e.printStackTrace(); } } // if (conn != null) { // try { // conn.close(); // conn = null; // } catch (SQLException e) { // e.printStackTrace(); // } // } } }