| | |
| | | |
| | | import com.core.common.Cools; |
| | | import com.zy.common.properties.ErpDbProperties; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.ObjectInputStream; |
| | | import java.io.ObjectOutputStream; |
| | | import java.sql.*; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | |
| | | * 简单持久层框架 |
| | | * Created by vincent on 2020/11/26 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ErpSqlServer { |
| | | |
| | | // 数据库连接 |
| | | private Connection conn; |
| | | // private Connection conn; |
| | | // 创建预编译语句对象,一般都是用这个而不用Statement |
| | | private PreparedStatement pstm = null; |
| | | // 创建一个结果集对象 |
| | |
| | | /********************************* 核心层 *********************************/ |
| | | /*****************************************************************************/ |
| | | |
| | | |
| | | private List<Map<String, Object>> executeQuery(String sql) { |
| | | Connection conn = null; |
| | | try { |
| | | Connection conn = getConn(); |
| | | conn = getConn(); |
| | | pstm = conn.prepareStatement(sql); |
| | | rs = pstm.executeQuery(); |
| | | // List<Map<String, Object>> maps = convertList(rs); |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private int executeUpdate(String sql) { |
| | | |
| | | public Number executeQueryCount(String sql, String column) { |
| | | Number value = 0; |
| | | Connection conn = null; |
| | | try { |
| | | Connection conn = getConn(); |
| | | conn = getConn(); |
| | | pstm = conn.prepareStatement(sql); |
| | | return pstm.executeUpdate(); |
| | | rs = pstm.executeQuery(); |
| | | // ResultSetMetaData metaData = rs.getMetaData(); |
| | | 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("更新ERP中间表失败===>>数据库连接conn为空"); |
| | | log.error("更新ERP中间表失败===>>" + sql); |
| | | } |
| | | return pstm.executeUpdate(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("更新ERP中间表失败===>>" + sql); |
| | | log.error("更新ERP中间表失败===>>" + e); |
| | | return 0; |
| | | } finally { |
| | | release(); |
| | | if (conn != null) { |
| | | try { |
| | | conn.close(); |
| | | conn = null; |
| | | } catch (SQLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | return list; |
| | | } |
| | | |
| | | private Connection getConn() { |
| | | if (null == this.conn) { |
| | | try { |
| | | Class.forName(erpDbProperties.getDriver_class_name()).newInstance(); |
| | | this.conn = DriverManager.getConnection(erpDbProperties.getUr(), erpDbProperties.getUsername(), erpDbProperties.getPassword()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new RuntimeException("获取ERP数据库连接失败"); |
| | | } |
| | | //synchronized |
| | | public Connection getConn() throws SQLException { |
| | | Connection conn = null; |
| | | try { |
| | | Class.forName(erpDbProperties.getDriver_class_name()).newInstance(); |
| | | conn = DriverManager.getConnection(erpDbProperties.getUr(), erpDbProperties.getUsername(), erpDbProperties.getPassword()); |
| | | } catch (Exception e) { |
| | | log.error("获取ERP数据库连接失败"); |
| | | e.printStackTrace(); |
| | | throw new RuntimeException("获取ERP数据库连接失败"); |
| | | } |
| | | return this.conn; |
| | | return conn; |
| | | // if (null == this.conn || this.conn.isClosed()) { |
| | | // try { |
| | | // Class.forName(erpDbProperties.getDriver_class_name()).newInstance(); |
| | | // this.conn = DriverManager.getConnection(erpDbProperties.getUr(), erpDbProperties.getUsername(), erpDbProperties.getPassword()); |
| | | // } catch (Exception e) { |
| | | // log.error("获取ERP数据库连接失败"); |
| | | // e.printStackTrace(); |
| | | // throw new RuntimeException("获取ERP数据库连接失败"); |
| | | // } |
| | | // } |
| | | // return this.conn; |
| | | } |
| | | |
| | | private void release() { |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | if (conn != null) { |
| | | try { |
| | | conn.close(); |
| | | } catch (SQLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | // if (conn != null) { |
| | | // try { |
| | | // conn.close(); |
| | | // conn = null; |
| | | // } catch (SQLException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | /** |
| | | * 深拷贝 |
| | | */ |
| | | public ArrayList deepClone(List list) throws Exception { |
| | | // 序列化 |
| | | ByteArrayOutputStream bos = new ByteArrayOutputStream(); |
| | | ObjectOutputStream oos = new ObjectOutputStream(bos); |
| | | |
| | | oos.writeObject(list); |
| | | |
| | | // 反序列化 |
| | | ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); |
| | | ObjectInputStream ois = new ObjectInputStream(bis); |
| | | |
| | | return (ArrayList) ois.readObject(); |
| | | } |
| | | |
| | | } |