天天看點

JDBC學習(druid+Template)

代碼實作

  1. 導入驅動jar包
  2. 注冊驅動

    Class.forName(“com.mysql.jdbc.Driver”);

  3. 擷取資料庫連接配接對象

    Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/資料庫名稱”, “使用者名”, “密碼”);

  4. 定義sql語句
  5. 擷取執行sql的對象 Statement

    Statement stmt = conn.createStatement();

    PreparedStatement pstmt = conn.prepareStatement(sql);

  6. 執行sql

    int count = stmt.executeUpdate(sql); count為傳回執行的資料數量

    1. boolean execute(String sql) :可以執行任意的sql 了解
    2. ResultSet executeQuery(String sql) :執行DQL(select)語句

      * boolean next(): 遊标向下移動一行,判斷目前行是否是最後一行末尾(是否有資料),如果是,則傳回false,如果不是則傳回true

    3. int executeUpdate(String sql) :執行DML(insert、update、delete)語句、DDL(create,alter、drop)語句

      * 傳回值:影響的行數,可以通過這個影響的行數判斷DML語句是否執行成功 傳回值>0的則執行成功,反之,則失敗。

  7. 關閉資源

    stmt.close();conn.close();

JDBC工具類 : JDBCUtils

public class JDBCUtils {
	    private static String url;
	    private static String user;
	    private static String password;
	    private static String driver;
	    /**
	     * 檔案的讀取,隻需要讀取一次即可拿到這些值。使用靜态代碼塊
	     */
	    static{
	        //讀取資源檔案,擷取值。
	
	        try {
	            //1. 建立Properties集合類。
	            Properties pro = new Properties();
	
	            //擷取src路徑下的檔案的方式--->ClassLoader 類加載器
	            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
	            URL res  = classLoader.getResource("jdbc.properties");
	            String path = res.getPath();
	            System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties
	            //2. 加載檔案
	           // pro.load(new FileReader("D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties"));
	            pro.load(new FileReader(path));
	
	            //3. 擷取資料,指派
	            url = pro.getProperty("url");
	            user = pro.getProperty("user");
	            password = pro.getProperty("password");
	            driver = pro.getProperty("driver");
	            //4. 注冊驅動
	            Class.forName(driver);
	        } catch (IOException e) {
	            e.printStackTrace();
	        } catch (ClassNotFoundException e) {
	            e.printStackTrace();
	        }
	    }
	
	
	    /**
	     * 擷取連接配接
	     * @return 連接配接對象
	     */
	    public static Connection getConnection() throws SQLException {
	
	        return DriverManager.getConnection(url, user, password);
	    }
	
	    /**
	     * 釋放資源
	     * @param stmt
	     * @param conn
	     */
	    public static void close(Statement stmt,Connection conn){
	        if( stmt != null){
	            try {
	                stmt.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            }
	        }
	
	        if( conn != null){
	            try {
	                conn.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            }
	        }
	    }
	
	
	    /**
	     * 釋放資源
	     * @param stmt
	     * @param conn
	     */
	    public static void close(ResultSet rs,Statement stmt, Connection conn){
	        if( rs != null){
	            try {
	                rs.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            }
	        }
	
	        if( stmt != null){
	            try {
	                stmt.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            }
	        }
	
	        if( conn != null){
	            try {
	                conn.close();
	            } catch (SQLException e) {
	                e.printStackTrace();
	            }
	        }
	    }
	
	}
           

JDBC控制事務

使用Connection對象來管理事務

*開啟事務:setAutoCommit(boolean autoCommit) :調用該方法設定參數為false,即開啟事務-----在執行sql之前開啟事務

*送出事務:commit() – 當所有sql都執行完送出事務

*復原事務:rollback() – 在catch中復原事務

Druid連接配接池

  1. 步驟

    1. 導入jar包 druid-1.0.9.jar

    2. 定義配置檔案:

    * 是properties形式的

    * 可以叫任意名稱,可以放在任意目錄下

    3. 加載配置檔案。Properties

    *

    Properties pro = new Properties(); InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is);

    4. 擷取資料庫連接配接池對象:通過工廠來來擷取 DruidDataSourceFactory

    *

    DataSource ds = DruidDataSourceFactory.createDataSource(pro);

    5. 擷取連接配接:getConnection

    *

    Connection conn = ds.getConnection();

    6. 對JDBCUtils進行修改使用連接配接池進行簡化

JDBCTemplate–Spring架構對JDBC的簡單封裝

  1. 導入jar包
  2. 建立JdbcTemplate對象。依賴于資料源DataSource

    * JdbcTemplate template = new JdbcTemplate(ds);

  3. 調用JdbcTemplate的方法來完成CRUD的操作

    * update():執行DML語句。增、删、改語句

    * queryForMap():查詢結果将結果集封裝為map集合,将列名作為key,将值作為value 将這條記錄封裝為一個map集合------注意:這個方法查詢的結果集長度隻能是1

    *

    Map<String, Object> map = template.queryForMap(sql, 1001,1002);

    * queryForList():查詢結果将結果集封裝為list集合------注意:将每一條記錄封裝為一個Map集合,再将Map集合裝載到List集合中

    *

    List<Map<String, Object>> list = template.queryForList(sql);

    * query():查詢結果,将結果封裝為JavaBean對象

    * query的參數:RowMapper------一般我們使用BeanPropertyRowMapper實作類。可以完成資料到JavaBean的自動封裝

    *

    List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));

    * new BeanPropertyRowMapper<類型>(類型.class)

    * queryForObject:查詢結果,将結果封裝為對象

    * 一般用于聚合函數的查詢

    *

    Long total = template.queryForObject(sql, Long.class);