版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JDBC JdbcSession的創(chuàng)建 數(shù)據(jù)異常的處 結(jié)果集合的處 更新的實(shí) 無參數(shù)更新數(shù) 帶參數(shù)更新數(shù) 批量帶參數(shù)更新數(shù) 批量無參數(shù)更 JdbcSession中特殊參數(shù)類 對象的持久 普通JavaBean的持久 對象定 構(gòu)造數(shù)據(jù)映射對 對象................................................................................................................對象寫 對象更 對象刪 SuperVO的持久 常用的API的使 IUAPQueryBS接 結(jié)果集的控 附 常見問題解 —JDBCJdbcSessionPersistenceManagerPersistenceManagersessionManager=PersistenceManager.getInstance();try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會話}catch(DbExceptione)}finally.}數(shù)據(jù)異常的處try數(shù) 過}catch(DbExceptione)//to相關(guān)處DbException是一個(gè)抽象異常類,它被用來處理SQLExceptiontry數(shù) 過}catch(DbExceptione)//to相關(guān)處//to//to}finally//}對查詢結(jié)果集合的處理,主要由ResultProcessor類來實(shí)現(xiàn),這是一個(gè)接口ResultProcessor包含有一個(gè)簡單的方法,不同的ResultProcessor實(shí)現(xiàn)返回不同的結(jié)果對象。ArrayProcessor數(shù)組處理器,返回一個(gè)對象數(shù)組,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果集ArrayListProcessorArrayListMapProcessorHashMapHashMap,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應(yīng)HashMap的一個(gè)關(guān)鍵字和相應(yīng)的值。MapListProcessorHashMapArrayList集合,集合中的每一個(gè)元素是一個(gè)HashMap,每個(gè)HashMap對應(yīng)結(jié)果集中的一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應(yīng)HashMap的一個(gè)關(guān)鍵字和相應(yīng)的值。 能自動把結(jié)果集中的值按列的名稱映射到j(luò)avaBean中,如結(jié)果集中有名稱為”name”的javagetName()方法就能把結(jié)果集合中”name”對應(yīng)的值映射BeanProcessorArrayList集合,集合中的每一個(gè)元素是一javaBean,javaBeanJavaBean中的數(shù)據(jù)映射關(guān)系和BeanProcess同理。ColumnProcessorJava對象,結(jié)果集中只有一行數(shù)據(jù),該對象對 ListProcessor:值對象集合處理器,根據(jù)映射信息返回一個(gè)ArrayList集合,集合中的每一個(gè)元素是一個(gè)javaBean,每個(gè)javaBean對應(yīng)結(jié)果集合中一行數(shù)據(jù),其中每個(gè)JavaBean中的數(shù)據(jù)映射關(guān)系和BeanMap Process同理BeanMapProcessorJavaBean,結(jié)果集中只有一行數(shù)據(jù),該處理器能自動把結(jié)果集中的值按列的名稱映射到j(luò)avaBean中,如結(jié)果publicclasspublicclassCustomProcessorextendsBaseProcessorpublicObjectprocessResultSet(ResultSetrs)throwsSQLException…自定義實(shí)…}}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc='0001AA10000000000DDD'";}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'whereSQLParameterparameternewSQLParameter();構(gòu)造參數(shù)對parameter.addParam("0001AA10000000000DDD");添加參數(shù),JdbcSession會將參數(shù)對象中的}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc=?";SQLParameterparameter=newsession.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{.}PersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc=’'0001AA10000000000DDD'’";introws=}catch(DbExceptione)}finally{.}JdbcSessionPersistenceManagersessionManager=null;try{JdbcSessionPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql=更新或插入Null字段的SQL語句……SQLParameterparameternewparameter.addNullParam(Types.INTEGER);session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{.}BlobPersistenceManagerPersistenceManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql更新或插入Blob字段的SQL語句SQLParameterparameter=newSQLParameter();parameter.addBlobParam(newObject());session.addBatch(sql,session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{}ClobSessionManagerSessionManagersessionManager=null;try{JdbcSessionsessionsessionManagergetJdbcSession;//開始jdbc會Stringsql=更新或插入Clob字段的SQL語句……SQLParameterparameter=newSQLParameter();parameter.addClobParam(newString());session.addBatch(sql,parameter);introws=}catch(DbExceptione)}finally{}二對象的持久JavaBean//importsimplied….publicclass //importsimplied….publicclass privateintid;privateStringname;intage;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}…}在定義了類以后,需要將類映射成數(shù)據(jù)表,需要注意的是目前的持久層JavaBeanJavaBean只能映射成一個(gè)數(shù)據(jù)表。JavaBean,JavaBean和表是(IDNUMBER(5,0)NOTNAMENAMEVARCHAR(40)NOTNULL,AGENUMBER(3,0)NOTNULL,PRIMARYKEY(ID))負(fù)責(zé)定義數(shù)據(jù)庫與javaBeanpublicpublicinterface Meta@returnString@return表StringString[]String[]}根據(jù)ImapMeta接口的定義可以知道任何實(shí)現(xiàn)了ImapMeta接口的對象映射元數(shù)據(jù)Javabean對應(yīng)的數(shù)據(jù)庫表名稱、主鍵名稱、字段名稱,以及和數(shù)據(jù)庫字段一一對應(yīng)的Javabean對象的屬性名稱。根據(jù)前面的例子我們可以定義.java的對象映射元數(shù)據(jù)類VOMeta.javaimportimport publicVOMetaimplements MetaprivateString[]attributes=newString[]{"id","name","age"};privateString[]columns=newString[]{"ID","NAME","AGE"};publicStringgetPrimaryKey(){return}return}publicString[]getAttributes(){returnattributes;}publicString[]getColumns(){returncolumns;}}統(tǒng)中提供了nc.bs.dao.BaseDAO,該類是數(shù)據(jù)庫幫助類封裝了常用的持久層操作,提供了IUAPQueryBS和IVOPersistence以及superDMOBaseDAOdao=newVOMeta 一個(gè)對象(在本例中,假設(shè)表中已存在10條記錄,ID從1到10。要從數(shù)據(jù)庫中得到一個(gè)對象只需要BaseDAO實(shí)例讓我們讀入ID是5BaseDAOdao=newVOMeta 現(xiàn)在創(chuàng)建一個(gè)對象,并將它寫入數(shù)據(jù)庫BaseDAOBaseDAOdao=newVOMetameta=new如果想要保留類中的主鍵并插入到數(shù)據(jù)表中應(yīng)該使現(xiàn)在利用對象,更新數(shù)據(jù)庫中的ID=4的對應(yīng)數(shù)BaseDAOBaseDAOdao=newVOMetameta=new現(xiàn)在利用對象,刪除數(shù)據(jù)庫中的ID=4的對應(yīng)數(shù)BaseDAOBaseDAOdao=newVOMeta和功能請參考BaseDAO的JavaDoc。SuperVOSuperVONC系統(tǒng)中比較特殊的值對象,該值對象自身已經(jīng)包涵了值對象到數(shù)據(jù)庫中的VO進(jìn)行持久化操作。BaseDAOBaseDAOdao=new.(BaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.updateVO(vo)BaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.deleteVOBaseDAOdao=newBaseDAO();XXXSuperVOBaseDAOdao=newBaseDAO();XXXSuperVOvo=newXXXSuperVO();dao.insertVOBaseDAOSuperVO的持久化(CRUD操作)提供了各種應(yīng)用不同的方法,具體使用方法和功能請參考BaseDAO的JavaDoc三常用的API的使PersistenceManagerpersistence=null;try{persistencePersistenceManager.getInstance(數(shù)據(jù)源)JdbcSessionsession=persistence.getJdbcSession();//數(shù)據(jù)調(diào)用1//數(shù)據(jù)庫調(diào)用2//數(shù)據(jù)庫調(diào)用Session.excuteQuery//或其它方法調(diào)用PersistenceManagerpersistence=null;try{persistencePersistenceManager.getInstance(數(shù)據(jù)源)JdbcSessionsession=persistence.getJdbcSession();//數(shù)據(jù)調(diào)用1//數(shù)據(jù)庫調(diào)用2//數(shù)據(jù)庫調(diào)用Session.excuteQuery//或其它方法調(diào)用傳入SessionObjecto=Callmethod(Session);}catch(DAOExceptionThrowsnewPersistence.}PersistenceManager包括supervo及objma的查詢和持久化,PersistenceManager具體提供的方法和功能請參考PersistenceManager的JavaDoc.SuperVOJavaBean,對于通用持久化或泛化持久化,無任何業(yè)務(wù)邏輯的insert、update、delete操作強(qiáng)烈建議前臺使用該接口,需要業(yè)務(wù)邏輯的持久化操作必須使用具體的名稱來完成業(yè)務(wù)方法的Service。IVOPersistence具體提供的方法和功能請參考IVOPersistence的JavaDoc.privateprivateIVOPersistencegetVOPersistence()throwsBusinessException{if(iVOPersistence==null)tryiVOPersistence=(IVOPersistence)}catch(ComponentExceptione)thrownewSysInitException("IUAPQueryBSnot}return}SuperVO和其它任何含有映射原數(shù)據(jù)的javaBean的實(shí)現(xiàn)機(jī)制,IUAPQueryBS具體提供的方法和功能請參考IUAPQueryBS的privateprivateIUAPQueryBSgetUAPQuery()throwsBu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南師范大學(xué)科技學(xué)院《免疫學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《母嬰中醫(yī)護(hù)理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級生物上冊第二單元第二章第一節(jié)細(xì)胞通過分裂產(chǎn)生新細(xì)胞教案新版新人教版
- 七年級語文上冊單元清三新人教版
- 三年級科學(xué)上冊第一單元科學(xué)在我們身邊第二課我們周圍的動物教案青島版
- 甲流乙流培訓(xùn)課件
- 雪佛蘭銷售培訓(xùn)課件
- 培訓(xùn)課件包教學(xué)課件
- 《抗菌藥物概論課件》課件
- 小學(xué)生比賽課件模板
- 食物損失和浪費(fèi)控制程序
- 特種設(shè)備安全管理電梯模擬考核題庫888題(含標(biāo)準(zhǔn)答案)
- 債權(quán)法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 關(guān)于農(nóng)機(jī)安裝合同模板
- 2024解讀《弘揚(yáng)教育家精神》全文
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- TCCIAT 0046-2022 混凝土剪力墻結(jié)構(gòu)裝配式組合殼體系技術(shù)規(guī)程
- GB/Z 44118.1-2024電能質(zhì)量技術(shù)管理第1部分:總則
- 2024年銀行招聘筆試真題題庫
- 小區(qū)物業(yè)續(xù)聘方案
- 石油鉆采專用設(shè)備制造考核試卷
評論
0/150
提交評論