-
@JDBC---替代品之myBatis
MyBatis:支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。
特點:
??? 1:易于上手和掌握。
??? 2:SQL卸載XML里,便于統一管理和優化。
??? 3:解除SQL與程序代碼的耦合。
??? 4:提供映射標簽,支持對象與數據庫的orm字段關系映射。
??? 5:提供對象關系映射標簽,支持對象關系組建維護。
??? 6:提供XML標簽,支持編寫動態SQL。查看全部 -
@JDBC---替代品之DBUtils
核心接口:
1.DbUtils:提供如關閉連接,裝載JDBC驅動程序等常規工作的工具類;
2.QueryRunner:該類簡化了SQL查詢,它常與ResultSetHandler組合在一起使用
3.ResultSetHandler:執行處理一個java.sql.ResultSet,將數據轉變并處理為任何一種形式,這樣有益于其應用而且使用起來更容易。 ?實例1:
final?String?SQL?=?"INSERT?INTO?test_1?VALUES(?,?)"; int?result?=?new?QuertRunner().update(conn,SQL,new?Object[]{"John","123"});
實例2:
final?String?SQL?=?"SELECT?*?FROM?test_1"; Test_1Bean?testBean?=?new?QuertRunner().quert(conn,SQL,new?HeanHandler(Test_lBean.class));
查看全部 -
@JDBC---連接池dbcp與c3p0總結
jar包、配置文件、獲取連接。
dbcp是Spring推薦,c3p0是Hibernate推薦。
查看全部 -
@JDBC---數據庫連接池之C3P0
1.導入相關C3P0的jar包
????c3p0-0.9.2-pre4.jar
????mchange-commons-java-0.2.2.jar
2.在項目根目錄下添加配置文件c3p0.propertiesc3p0.driverClassName="com.mysql.jdnc.Driver" c3p0.url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" c3p0.username="root" c3p0.password="root"
3.編寫類文件,創建連接池
public?class?C3P0Util{ ?????private?static?ComboPooledDataSource?ds?=?new?ComboPooledDataSource(); ?????public?static?Connection?getConnection(){ ?????????try{ ?????????????return?ds.getConnection(); ?????????}catch(SQLException?e){ ?????????????throw?new?RuntimeException(e); ?????????} ?????} }
查看全部 -
@JDBC---數據庫連接池之dbcp
1.導入相關dbcp的jar包
????commons-dpcp2-2.1.1.jar
????commons-pool2-2.4.2.jar
????commons-logging-1.2.jar2.在項目根目錄下添加配置文件dbcp.properties
????主要配置信息driverClassName="com.mysql.jdnc.Driver" url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" username="root" password="root"
3.實現dbcp連接池
public?class?DBCPUtil{ ?????//數據源,static ?????private?static?DataSource?DS;? ?????//配置文件位置? ?????private?static?final?String?configFile?=?"/dbcp.properties";? ?????//默認構造函數? ?????public?DBCPUtil(){?? ?????????initDbcp();? ?????}? ?????//初始化DS? ?????private?static?void?initDbcp(){?? ?????????Properties?pops?=?new?Properties();?? ?????????try{??? ?????????????//以流形式讀取配置文件??? ?????????????props.load(Object.class.getResourceAsStream(configFile)); ?????????????//創建數據源? ?????????????DS?=?BasicDataSourceFactory.createDataSource(pops);? ?????????}catch(Exception?e){??? ?????????????e.printStackTrace();?? ?????????}? ?????}? ? ?????//連接數據庫???? ?????public?Connection?getConn(){????? ?????????Connection?con=null;????? ?????????if(DS!=null){?????? ??????????????try{??????? ??????????????????//獲取連接????? ??????????????????con=DS.getConnection(); ??????????????}catch(Exception?e){??????? ??????????????????e.printStackTrace(System.err);?????? ??????????????}?????? ??????????????try{??????? ??????????????????//設置成手動提交事務 ??????????????????con.setAutoCommit(false);????? ??????????????}catch(SQLException?e){?????? ??????????????????e.printStackTrace(System.err);??? ??????????????}????? ?????????}????? ?????????return?con;??? ?????} }
查看全部 -
@JDBC---實現事務管理
事務特點:
????1.原子性:事務是一個完整的操作。
????2.一致性:當事務完成時,數據必須處于一致的狀態。
????3.隔離性:對數據進行修改的所有并發事務必須是隔離的?!?strong>不可以同時操作一條數據】
????4.永久性:事務完成后嗎,數據庫的修改必須是永久保持的。事務管理:
????1.我們通過提交commit()或是回退rollback()來管理事務的操作。
????2.事務操作默認是自動提交。
????3.可以通過setAutoCommit(false)來禁止自動提交。調用過程:
????1.conn.setAutoCommit(false);//jdbc默認自動提交;
????2.try...catch語句包含執行業務邏輯,完成后conn.commit();
????3.在catch中,加上回滾語句:conn.rollback();查看全部 -
@JDBC---帶輸出參數的存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?`sp_select_count`(OUT?count?INT(10)) BEGIN ??SELECT?COUNT(*)?INTO?count?FROM?user1;? END
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection(); //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall("call?sp_select_count(?)"); cs.registerOutParameter(1,Types.INTEGER); //3.執行存儲過程 cs.execute(); //4.處理結果集 cs.getInt(1);
查看全部 -
@JDBC---帶輸入參數的存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?`sp_select_nofilter`(IN?sp_name?VARCHAR(20)) BEGIN ??IF?sp_name?IS?NULL?OR?sp_name?=?''?THEN ??SELECT?*?FROM?user1; ?ELSE ??IF?LENGTH(sp_name)=11?AND?SUBSTRING(sp_name,1,1)=1?THEN ???SELECT?*?FROM?user1?WHERE?user_naem=sp_name; ??ELSE ???SELECT?*FROM?user1?WHERE?user_name?LIKE?CONCAT('%',sp_name,'%'); ??END?IF; ?END?IF; END
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection(); //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall("call?sp_select_filter(?)"); cs.setString(1,sp_name); //3.執行存儲過程 cs.execute(); //4.處理結果集 ResultSet?rs?=?cs.getResultSet(); //5.遍歷結果集 while(rs.next()){ ????rs.getString(...); ????... }
查看全部 -
@JDBC---調用無參存儲過程
存儲過程的代碼:
CREATE?PROCEDURE?db_name.sp_name() BEGIN ?select?*?FROM?table_name; END;
調用過程:
//1.獲取連接 Connection?c?=?DBHelper.getConnection(); //2.獲得CallableStatement CallableStatement?cs?=?c.PrepareCall("call?sp_select()"); //3.執行存儲過程 cs.execute(); //4.處理結果集 ResultSet?rs?=?cs.getResultSet(); //5.遍歷結果集 while(rs.next()){ ????rs.getString(...); ????... }
查看全部 -
dbcp c3p0
查看全部 -
String a = null;的意思是讓代碼出錯,導致數據寫入不完整。如果沒有進行事務處理,則會導致數據丟失或異常,如果進行了事務處理,則會對執行的操作進行回滾(還原撤銷讀寫操作)。
事務處理的步驟:
一、關閉自動提交:conn.setAutoCommit(false);
二、手動提交事務:conn.commit();
三、進行事務回滾:conn.rollback;//放置在try-catch語句中查看全部 -
JDBC對事物管理的支持
查看全部 -
事物的特點!
查看全部 -
學習記錄:dbcp和c3p0的區別
查看全部 -
dpcp 相關jar 包
commons-dpcp2-2.1.1.jar
commons-pool2-2.4.2.jar
commons-logging
查看全部
舉報