1. 程式人生 > 資料庫 >關於JDBC-MySql

關於JDBC-MySql

JDBC連線Mysql

手動獲取連線資料庫的方式


//方式一、通過反射的方式進行建立(註冊驅動),面向介面程式設計
    Class clazz = Class.forName("com.mysql.jdbc.Driver");
    Driver driver = (Driver)clazz.newInstance();
	DriverManager.registerDriver(driver);
   
//方式二、載入驅動類
	Class.forName("com.mysql.jdbc.Driver"); //將mysql下的Driver驅動載入到方法區

//為什麼直接通過方式二載入驅動類就也可以獲取連線。通過檢視Mysql下Driver的原始碼:
//在方式二下Driver的類中,有關於註冊驅動的靜態程式碼塊,
static {
        try {
            DriverManager.registerDriver(new Driver());  //在Driver中的原始碼 
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
/**
 * Description:通過JDBC手動連線Mysql的幾種方式
 */
public class TestOne {

    @Test
   public void TestOne() throws Exception {

        //註冊驅動的三種方式
        //方式一,通過建立物件的方式
//        Driver driver = new com.mysql.jdbc.Driver();
//        DriverManager.registerDriver(driver);

        //方式二、通過反射的方式進行建立,面向介面程式設計
        /**
         * Class clazz = Class.forName("com.mysql.jdbc.Driver")
         * Driver driver = (Driver)clazz.newInstance();
         */
 //       Driver driver = (Driver)Class.forName("com.mysql.jdbc.Driver").newInstance();
//        DriverManager.registerDriver(driver);

        //方式三、
//        Class.forName("com.mysql.jdbc.Driver");


        //獲取資料連線的兩種方式
        //方式一獲取資料連線,缺點:如果修改連線資訊需要通過修改程式碼來實現,可以通過通過修改配置資訊實現,
//        DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");

        /*方式二:通過修改配置資訊,配置檔案:***.properties
        * 1、實現了程式碼與資料的分離
        * 2、如果後期需要修改資訊,不需要修改程式碼,直接修改程式碼資訊
        * 3、後期需要將程式碼的編譯檔案放到伺服器上,如果要修改配置資訊,需要再重新編譯,
        *
        * */

        Properties pro = new Properties();
        //識別的當前路徑為module
       // FileInputStream fis = new FileInputStream(new File("src/jdbcMysql.properties"));  //也可以

        //識別當前的路徑為src
        InputStream fis = ClassLoader.getSystemResourceAsStream("jdbcMysql.properties");

        pro.load(fis);

        Class.forName(pro.getProperty("driverClassName"));
        Connection connection = DriverManager.getConnection(pro.getProperty("url"), pro.getProperty("username"), pro.getProperty("password"));

        System.out.println(connection);
    }
}

通過資料庫連線池連線資料庫

使用阿里開發的Druid(德魯伊)資料庫連線池的方式

public class TestTwo {

    @Test
    public void Test() throws Exception {

        //方式一
        //建立資料庫池
/*      DruidDataSource dataSource = new DruidDataSource();

        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");

        //管理
        dataSource.setInitialSize(5); //設定初始化資料連線池的大小
        dataSource.setMaxActive(10);

        dataSource.getConnection();*/

        /**
         * 通過配置檔案的方式進行配置
         *注意:
         *工廠模式,DruidFactory接收一個properties,
         * getResourceAsStream是在src目錄下找
         * 注意配置檔案中的key值要和Druid中的一致,(去掉Set之後,第一個字母小寫就是key值)
         */

        Properties pro = new Properties();

        //獲取配置檔案,在src路徑下找配置檔案
        InputStream is = TestTwo.class.getClassLoader().getResourceAsStream("jdbcMysql.properties");

        pro.load(is);
        DataSource dataSource1 = DruidDataSourceFactory.createDataSource(pro);

        Connection connection = dataSource1.getConnection();
    }
}

配置檔案(jdbcMysql.properties)

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
initialSize=10
maxActive=20
maxWait=10000

應用中,應將這些連線做成一個工具類的方法

BeanHandler:查詢表中的一個記錄,作為java的物件返回