zoukankan      html  css  js  c++  java
  • 如何使用单例模式返回一个安全的Connection

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    String url = "jdbc:mysql://localhost:3306/mydb";
                    String name = "root";
                    String password = "";
                    String Driver = "com.mysql.jdbc.Driver";
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }

    使用枚举类时,构造方法会被自动调用。

    再修改一下,降低一下耦合度,将建立连接的四大参数改成在配置文件中获取

    首先在项目目录下建立一个配置文件

    把参数添加进去

    变成从配置文件中读取参数,这样修改的话只用修改配置文件就可以了

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    InputStream in=Connection.class.getClassLoader()
                            .getResourceAsStream("dbconfig.properties");
                    Properties pro=new Properties();
                    pro.load(in);
                    String url = pro.getProperty("url");
                    String name = pro.getProperty("name");
                    String password =pro.getProperty("password");
                    String Driver = pro.getProperty("DriverClassName");
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }
  • 相关阅读:
    EasyUI--messager
    EasyUI--初学
    框架错误汇总
    OGNL调用静态方法和属性
    查询内容在网页里面分页显示+跳页查看
    struts2——通配符
    JavaScript 输出
    JavaScript语法(一)
    Struts+Hibernate+jsp页面 实现分页
    elasticsearch-5.x JAVA API(001)
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7860358.html
Copyright © 2011-2022 走看看