版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
中行bfw框架開發(fā)和測試資料ppt第一頁,共79頁。共六部分內(nèi)容:1、基于BFW的開發(fā)流程2、技術(shù)重點3、中行項目開發(fā)過程4、中行項目的測試第二頁,共79頁。一、基于BFW的開發(fā)流程概述BFW(BocsoftFrameWork)是一個基于JAVA語言開發(fā)的,主要目標(biāo)為企業(yè)應(yīng)用開發(fā)中各種難點提供綜合全面的解決方案。(如:多渠道整合、用戶權(quán)限控制、事務(wù)處理、組件化資產(chǎn)管理于復(fù)用,第三方技術(shù)集成等)其核心思想是以IOC/DI容器為資產(chǎn)累積的平臺,面對各種應(yīng)用問題,開發(fā)各種有針對性的組件,提供解決方案。并形成技術(shù)資產(chǎn),持續(xù)優(yōu)化與擴(kuò)充,鼓勵充分復(fù)用,以實現(xiàn)最大程度內(nèi)提高開發(fā)生產(chǎn)力的目標(biāo)。第三頁,共79頁。BFW分層結(jié)構(gòu)4第四頁,共79頁。框架比較5第五頁,共79頁。核心概念第六頁,共79頁。開發(fā)組織架構(gòu)7第七頁,共79頁。分層介紹bfw項目開發(fā)展現(xiàn)層開發(fā)服務(wù)層開發(fā)DAO層開發(fā)產(chǎn)品層開發(fā)8第八頁,共79頁。展現(xiàn)層開發(fā)第九頁,共79頁。1、展現(xiàn)層結(jié)構(gòu)1服務(wù)層(通過依賴注入,在交易配置文件中定義使用)開發(fā)jsp頁面委托頁面查詢頁面撤銷頁面授權(quán)頁面修改頁面批量頁面復(fù)核頁面開發(fā)Action委托Action撤銷Action授權(quán)Action復(fù)核Action修改Action批量Action查詢Action交易配置文件菜單配置文件角色權(quán)限配置格式校驗配置多語言支持配置文件第十頁,共79頁。1、展現(xiàn)層結(jié)構(gòu)2交易配置文件:trs_***.xml菜單配置文件:menu_***_***.xml角色權(quán)限配置文件:role.xml格式校驗配置文件:style.xml多語言支持:異常信息:bfw_error_**_**.properties
常量信息:constant_**_**.propertiesJSP頁面:jsp_message_**_**.properties
頁面結(jié)構(gòu):page_**_**.properties
字典消息:dictionary_**_**.properties下載文件標(biāo)題:download_titiles_**_**第十一頁,共79頁。從交易說起交易配置文件trs_***.xml最簡單的交易<transactionid="QueryOperatorPre"template="emptytemplate"><channels> <channeltype="http"> <paramname="success">index</param> </channel></channels> </transaction>第十二頁,共79頁?;靖拍睿ㄒ唬┙灰讓崿F(xiàn)展現(xiàn)邏輯的基本要素。主要由action、fields、channels組成action:業(yè)務(wù)邏輯片斷fields:輸入域channels:呈現(xiàn)的選擇模版:執(zhí)行流程每個交易對應(yīng)一個預(yù)先定義的模板負(fù)責(zé)交易的流程控制對于業(yè)務(wù)邏輯片斷的編程原則上都應(yīng)該定義在Template中。chain:責(zé)任鏈command:責(zé)任鏈節(jié)點*DelegateCommand第十三頁,共79頁。BFW-HTTP處理時序14第十四頁,共79頁。BFW-HTTP核心組件MainServlet作為IOC容器加載入口。作為接入適配器,負(fù)責(zé)接收HTTP請求,調(diào)用控制(MainController),并將處理結(jié)果派發(fā)給視圖(View)進(jìn)行渲染。MainController完成上下文(Context)加工,負(fù)責(zé)調(diào)用BFW核心控制(CoreController),并負(fù)責(zé)異常的處理,生成視圖參數(shù),并將處理結(jié)果返回MainServlet。View接受MainServlet發(fā)送來的數(shù)據(jù),并負(fù)責(zé)數(shù)據(jù)的渲染呈現(xiàn)。BFW支持多種視圖技術(shù)download,jsp,Velocity等15第十五頁,共79頁。配置一個BFW-HTTP交易確定交易配置根據(jù)需求分析交易需要選擇的模板確定交易使用的視圖類型,視圖地址編寫Action實現(xiàn)業(yè)務(wù)邏輯編寫視圖頁面16第十六頁,共79頁。BFW-VIEW視圖BFW的視圖定義在http.xml文件中,MainViewResolver對象下。在交易的channel屬性中應(yīng)配置視圖類型、路徑、參數(shù)視圖格式:VIEWTYPE,PATH{KEY=VALUE,…}視圖類型:URL視圖通常用來呈現(xiàn)html通過localeMode支持國際化設(shè)定Download視圖用來支持文件下載Stream視圖通常用作系統(tǒng)間通訊Servlet視圖用來調(diào)用另一個BFW-HTTP交易其他(Velocity,Dynamic….)第十七頁,共79頁。BFW-ACTIONAction通常我們集成AbstractExecutableAction抽象類Action還有其他的接口如:Preparable,Submitable,PageLoader…,需要視選擇的模板決定。第十八頁,共79頁?;靖拍睿ǘ﹫D示:第十九頁,共79頁。下面具體步驟以B2B的訂單批量查詢?yōu)槔?lt;!--新建單筆委托提交--><transactionid="B2BQueryOrderMul"template="executeTemplate"><actions><refname=“act01”>orderMulQueryAct</ref></actions><fields><fieldname=“MerchantID">bpeMerchantIDStyle</field><fieldname=“OrderNum">B2BOrderNumber{option=true}</field><fieldname=“OrderStartDate">date10Style{option=true}</field><fieldname=“OrderEndDate">date10Style{option=true}</field></fields><channels><channeltype="http"><paramname="success">ent/b2b/b2bQueryOrderResult{id=0452}</param>
<paramname="success1">ent/b2b/test{id=0021}</param></channel></channels></transaction><actionid="orderMulQueryAct”
cass="com.bocnet.client.actions.ent.b2b.B2BQueryOrderMul"><refname="b2bPaymentService">B2bPaymentService</ref><refname="commonService">CommonService</ref><paramname="pageSize">5</param></action>2、定義交易配置文件1交易名稱模版名稱(不可重復(fù)提交)action名稱提交后臺的數(shù)據(jù)域格式檢查名稱Mvc中的視圖action名稱Action定義的java類注入action的依賴類頁面號第二十頁,共79頁。如何選擇視圖頁面轉(zhuǎn)發(fā):<channels><channeltype="http"><paramname="success">ent/b2b/b2bQueryOrderResult{id=0452}</param>
<paramname="success1">ent/b2b/test{id=0021}</param></channel></channels>/**銀行內(nèi)部客戶*/ if(cusType!=null&&cusType.equals("3")) context.setState(1);//Action內(nèi)部根據(jù)業(yè)務(wù)決定跳轉(zhuǎn)的頁面……………第二十一頁,共79頁。Style驗證style驗證<fields>
<fieldname=“MerchantID">bpeMerchantIDStyle</field><fieldname=“OrderNum">B2BOrderNumber{option=true}</field><fieldname=“OrderStartDate">date10Style{option=true}</field><fieldname=“OrderEndDate">date10Style{option=true}</field></fields>style.xml:<styleid="date10Style"><setting><paramname="option">false</param><paramname="pattern">((((1[6-9]|[2-9]\d)\d{2})/(0[13578]|1[02])/(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})/(0[13456789]|1[012])/(0[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})/02/(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))/02/29))</param></setting></style>第二十二頁,共79頁。2、定義交易配置文件2上面的介紹是最基本的交易定義,根據(jù)交易的不同目的、以及復(fù)雜程度,可以通過選擇不同的模版、屬性定義來實現(xiàn)。例如:
executeNoTokenTemplate模版:可重復(fù)提交,查詢頁面可以使用executeTemplate模版:不允許重復(fù)提交的頁面必需使用,并且對應(yīng)的jsp頁面中要使用<bfw:token/>標(biāo)簽,來控制重復(fù)提交。
模版:文件上傳可以使用pageLoaderTemplate模版:準(zhǔn)備頁面可以使用第二十三頁,共79頁。3、定義菜單文件<!–清算交收菜單配置--><beanid=“menu.transfer”parent=“_MenuItem”><!--一級菜單:清算交收--><paramname="style">style_red</param><paramname="aimLeftChild">true</param><listname="children"><beanid=“menu.cd.ti”parent=“_MenuItem”><!--二級菜單:交易指令管理--><paramname="link"></param><paramname="aimLeftChild">true</param><listname="children"><beanid=“menu.cd.ti.operate”parent=“_MenuItem”><!--三級菜單:經(jīng)辦--><paramname="function">CD001</param><paramname="link">tiOperate.do</param></bean> <beanid=“menu.cd.ti.review”parent=“_MenuItem”><!--三級菜單:復(fù)核--><paramname="function">CD002</param><paramname="link">tiReview.do</param></bean>
</list></bean><!--這里可以繼續(xù)添加賬戶管理的二級菜單--></list></bean>菜單名稱,在menu_zh_CN.properties中定義對應(yīng)的頁面顯示菜單樣式定義,可在\BocnetClient\WebContent\common\css\zh_CN中找到菜單點擊對應(yīng)的交易菜單對應(yīng)角色權(quán)限的功能碼,權(quán)限在role.xml中定義第二十四頁,共79頁。4、角色權(quán)限配置文件Role.xml<!—清算交收權(quán)限配置--><beanclass="com.bocsoft.bfw.accesscontrol.rc.support.SimpleTrsGroupRole"> <paramname=“name”>CD001</param><!–指令管理--> <!–指令管理可以訪問的交易--> <listname="roles"> <param>tiOperate
</param><!–指令經(jīng)辦查詢--> <param>tiAdd</param><!–指令經(jīng)辦增加--> <param>tiModify
</param><!–指令經(jīng)辦修改--> <param>tiDelete
</param><!–指令注銷-->
</list></bean>Bfw框架角色權(quán)限處理類,無需關(guān)注角色權(quán)限的功能碼,在role.xml中定義此功能碼下可以進(jìn)行的交易操作第二十五頁,共79頁。5、格式校驗對公展現(xiàn)層輸入域格式校驗包括三部分:1、jsp頁面的校驗,通過js實現(xiàn),大部分校驗函數(shù)在\BocnetClient\WebContent\common\js-src\FormCheck.js中定義。頁面中不同格式輸入域的校驗方法可以參考checklist。2、style校驗,通過在交易配置文件中定義輸入域,在style.xml中定義校驗方法,由bfw框架進(jìn)行驗證。避免定義新style,盡量復(fù)用已有style。3、action中校驗,前兩種校驗主要針對單輸入域的校驗,對于和業(yè)務(wù)邏輯相關(guān)的復(fù)雜交易,需要在action中實現(xiàn)。第二十六頁,共79頁。頁面顯示jsp_message_zh_CN.propertiesL10N_7541=訂單信息如下,請復(fù)核!L10N_6296=訂單號L10N_0033=網(wǎng)上銀行L10N_0034=關(guān)閉L10N_0036=賬戶概覽-明細(xì)查詢-銀行賬戶-中國銀行網(wǎng)上銀行系統(tǒng)L10N_0037=關(guān)聯(lián)賬戶JSP頁面使用boc:translator標(biāo)簽來顯示:<tableborder="0"cellpadding="0"cellspacing="0"class="list_table"><tr><thcolspan="2"class="left"><%--訂單信息如下,請復(fù)核!--%><boc:translatorvalue="$L10N_7541"/></th></tr><tr><tdwidth="50%"class="right"><%--訂單號:--%><boc:translatorvalue="$L10N_6296"/></td><td><c:outvalue="${MerchantOrderNo}"/></td>開發(fā)階段寫成<boc:translatorvalue="訂單信息如下,請復(fù)核!"/>即可,上線前批程序生成第二十七頁,共79頁。頁眉、頁腳page_zh_CN.properties###對賬服務(wù)開始####對賬單核對-賬單列表.0471=余額對賬單核對page.top.0471=我們在這里為您提供余額對賬單核對、下載及其對應(yīng)的賬戶明細(xì)對賬單的查詢與下載功能page.bottom.0471=1、客戶點擊操作項下的“核對”可進(jìn)入該協(xié)議的賬單界面進(jìn)行核對賬單操作。<br>2、本界面上只顯示尚未反饋回執(zhí)的對賬單(含一年內(nèi)本期和非本期所有余額賬單),已核對完成的協(xié)議則不予以顯示#對賬單核對-賬單明細(xì).0472=余額對賬單賬戶明細(xì)核對page.top.0472=您可以在此點擊查看每個賬戶對應(yīng)的交易明細(xì)賬單,并確認(rèn)余額核對結(jié)果page.bottom.0472=1、點擊“提交”,系統(tǒng)將保存您本次操作結(jié)果;<br>2、點擊“暫存”,將暫存您本次操作結(jié)果,您在下次登陸時可繼續(xù)填寫;第二十八頁,共79頁。6、jsp頁面開發(fā)1典型的頁面有三種:1、只有數(shù)據(jù)展示的簡單頁面委托、修改結(jié)果頁面、詳情頁面
可選模板:executeNoTokenTemplate,pageLoaderTemplate2、有數(shù)據(jù)提交的頁面委托、修改可選模板:executeTemplate3、分頁頁面復(fù)核、授權(quán)選擇列表頁面,查詢結(jié)果頁面第二十九頁,共79頁。6、jsp頁面開發(fā)2提交頁面<%@pagecontentType="text/html;charset=utf-8"%><%@taglibprefix="boc"uri="/WEB-INF/tlds/bocnet.tld"%><%@taglibprefix="bfw"uri="/WEB-INF/tlds/bfw.tld"%><%@taglibprefix="tiles"uri="/WEB-INF/tlds/struts-tiles.tld"%><%@tagliburi="/WEB-INF/tlds/c.tld"prefix="c"%><tiles:insertdefinition="baseDef"flush="true"><tiles:putname="bodyComment"><boc:translatorvalue="${VIEW_id}"prefix="page.top"/></tiles:put><tiles:putname="bodyInput"type="string">
<scriptlanguage="JScript.Encode"src="<boc:localeResourceuri="/common/js/calendar.js"/>"></script><scriptlanguage="JScript.Encode"src="<boc:localeResourceuri="/common/js/FormCheck.js"/>"></script><scriptlanguage="javascript"> functioncheckForm() { if(!check_empty("form1.PayeeValue|TrfDate|TrfAmt","<%--收款人--%><boc:translatorescape="js"value="$L10N_0903"/>|<%--付款日期--%><boc:translatorescape="js"value="$L10N_1158"/>|<%--付款金額--%><boc:translatorescape="js"value="$L10N_1168"/>")) returnfalse;
pageProcessing(); returntrue; }</script><boc:formname="form1"method="post"action="CGTSingleConsignResult.do"><bfw:token/><bfw:ViewName/><bfw:saveMap/>編碼格式Tile頁面類型公用js方法引用禁止頁面重復(fù)提交顯示bfw異常提示信息頁面提交異常返回后保留已有savedMap對象內(nèi)容顯示滾動條,禁止頁面操作國際化定義第三十頁,共79頁。6、jsp頁面開發(fā)3提交頁面<bfw:hiddenfieldList="SmtDate,TrfCur,PayeeValue,PayeeBocFlag,PayeeShow,payeeListCount"/><tableborder="0"cellpadding="0"cellspacing="0"class="title_table"><tr><td><boc:translatorvalue="${VIEW_id}"prefix=""/></td></tr></table><br>
<tableborder="0"cellpadding="0"cellspacing="0"class="errorfont"><tr><td><c:outvalue="${_exceptionMessage}"/></td></tr></table>隱藏域,用來在頁面間傳遞數(shù)據(jù),名稱要和交易中一致異常信息顯示位置,和<bfw:ViewName>配合使用第三十一頁,共79頁。6、jsp頁面開發(fā)4第三十二頁,共79頁。7、bfw標(biāo)簽<bfw:token/><bfw:ViewName/><bfw:saveMap/>boc:optionboc:translatorboc:radio<boc:hidden/>第三十三頁,共79頁。<bfw:token/>
表單防重,禁止頁面重復(fù)提交。
配合模板executeTemplate使用。trs_*.xml交易配置文件<transactionid="cassCheckConfirmRes"template="executeTemplate"><actions><refname="act01">cassCheckConfirmResAction</ref></actions><channels><channeltype="http"><paramname="success">ent/cass/check/cassCheckConfirmRes{id=04713}</param></channel></channels></transaction>34第三十四頁,共79頁。<bfw:ViewName/>記錄當(dāng)前訪問鏈接的地址,當(dāng)拋ValidationException時通過這個地址重定向到當(dāng)前頁面(顯示bfw異常信息)action
if(accountNoObj==null){//如果沒有余額調(diào)整記錄,拋出異常thrownewValidationException("bill.check.billAccDetailAdjust.detailSubmitEmpty"); }bfw_error_zh_CN.properties bill.check.billAccDetailAdjust.detailSubmitEmpty=賬單核對的賬號不為空頁面<boc:formname="form1"method="post"action=""><bfw:token/><bfw:saveMap/><bfw:ViewName/><tableborder="0"cellpadding="0"cellspacing="0"class="errorfont"> <tr><td><c:outvalue="${_exceptionMessage}"/></td></tr></table>35第三十五頁,共79頁。<bfw:saveMap/>
用于保留頁面裝載時的列表數(shù)據(jù)
頁面提交異常后保留已有savedMap對象的內(nèi)容A的數(shù)據(jù)發(fā)送到A的結(jié)果頁面顯示
/**設(shè)置上下文參數(shù)*/ context.setData("billId",newSaveObject(billId)); context.setData("billCheckDetailsSize",newSaveObject(String.valueOf(details.size()))); context.setData("billCheckDetails",newSavedArrayList(details));A的結(jié)果頁面中包含bfw:saveMap標(biāo)簽,頁面提交到BB拋出BfwException異常,跳回A的結(jié)果頁面,之前從A帶到頁面的數(shù)據(jù),希望保留顯示36第三十六頁,共79頁。boc:option1.列表數(shù)據(jù)來源與后臺數(shù)據(jù)庫<selectname="oppFundNo"id="oppFundNo"><boc:optionitems=“${oppFundNos}” 集合數(shù)據(jù)來源 currentValue=“${detail.oppFundNo}“ 當(dāng)前默認(rèn)選擇項的數(shù)據(jù)來源 optionName=“oppFundNo,oppFunName,openBank“列表文本 delimeter=“/“ 文本的間隔字符 delimeter1=“|“ 值的間隔字符 optionValue=“entityFundAct,oppFundType”/>列表的值</select>相當(dāng)于<selectname="oppFundNo"id="oppFundNo"><c:forEachvar="item"items="${oppFundNos}"><optionvalue=“${item.entityFundAct}|${item.oppFundType}”自動選中>${item.oppFundNo}/${item.oppFundName}/${item.openBank}</option></c:forEach></select>37第三十七頁,共79頁。boc:option2.列表數(shù)據(jù)來源常量文件<selectname="transSource"><bfw:option
items=“${_constantsMap.TransSource}” constant.xml中l(wèi)ist的名稱
constantPrefix=“Ti.TransSource” perties中的前綴(key)
currentValue=“${detail.transSource}”/> 列表當(dāng)前默認(rèn)選中值的數(shù)據(jù)來源</select>constant.xml:<!–指令來源--><listname="TransSource"><param>1</param><param>2</param><param>3</param></list>perties:#指令來源鍵值Ti.TransSource.1=人工Ti.TransSource.2=網(wǎng)銀Ti.TransSource.3=SWIFT38第三十八頁,共79頁。boc:translator1.用于顯示常量(帶prefix)<c:forEachvar="item"items="${List}"><tr><td><c:outvalue="${item.traninstId}"/></td><td><boc:translatorvalue="${item.transSource}" prefix="Ti.TransSource"/>
</td></tr></c:forEach>根據(jù)貨幣碼,如人民幣001<boc:translatorvalue=“${row.currency.code}”prefix=“Currency.type”/>#幣種屬性Currency.type.=全部Currency.type.000=不可選擇Currency.type.001=人民幣元39第三十九頁,共79頁。boc:translator
2.用于國際化文本<tableborder="0"cellspacing="0"cellpadding="0"class="list_table"><tr><th><%--賬號--%><boc:translatorvalue="$L10N_0373"/></th><th><%--核對號--%><boc:translatorvalue="$L10N_7926"/></th>開發(fā)階段,標(biāo)簽里直接寫中文即可<boc:translatorvalue="賬號"/>jsp_message_zh_CN.propertiesL10N_0372=賬號:L10N_0373=賬號L10N_0374=別名L10N_0375=賬戶信息如下,如需取消關(guān)聯(lián)請確認(rèn)!40第四十頁,共79頁。3.用于國際化文本(javascript)if(!check_empty(balanceSelectName,‘<%--客戶賬面余額--%>
<boc:translatorescape="js"value="$L10N_7930"/>‘))returnfalse;escape=“js“表示自動轉(zhuǎn)譯特殊字符,如字符串中的單引號等,通常都需要加上41第四十一頁,共79頁。boc:button<%--提交--%><boc:buttonname="confirm"value="$L10N_7967"onclick="returnconfirmation();"type="submit"/>注意value里面不需要在使用boc:translator標(biāo)簽,以下是錯誤的<%--提交--%><boc:buttonname="confirm"value="<boc:translatorvalue="$L10N_7967"/>"onclick="returnconfirmation();"type="submit"/>
42第四十二頁,共79頁。boc:formatNumber格式化標(biāo)簽貨幣格式化(需要貨幣碼)<boc:formatNumbervalue="${row.currentBalance}" bocCurrency="${row.currency.code}"/>數(shù)字格式化<boc:formatNumbervalue="${row.amount}"groupingUsed="false" maxFractionDigits="2"/>日期格式化(支持date和string)<boc:formatDatevalue="${row.modifyDate}"pattern="yyyy/MM/dd"/>43第四十三頁,共79頁。<boc:hiddenfieldList="CifNo,CifName"/>生成隱藏域,根據(jù)fieldList里逗號分割的key,隱藏域的value自動取context里的data分頁時,頁面的結(jié)果form需要加此標(biāo)簽,其中包含查詢form中的所有查詢條件的名稱context.setData(“CifNo",cifNo);context.setData(“CifName",cifName);44第四十四頁,共79頁。服務(wù)層開發(fā)第四十五頁,共79頁。1、服務(wù)層的主要任務(wù)1.提供數(shù)據(jù)給展現(xiàn)層2.接受展現(xiàn)層傳入的數(shù)據(jù),并進(jìn)行邏輯處理3.通過調(diào)用產(chǎn)品層與外系統(tǒng)交互,調(diào)用DAO與數(shù)據(jù)庫交互,來實現(xiàn)以上兩功能。第四十六頁,共79頁。2、服務(wù)層與其他層之間的調(diào)用關(guān)系展現(xiàn)層服務(wù)層產(chǎn)品層DAODatabase外部系統(tǒng)或后臺系統(tǒng)第四十七頁,共79頁。3、服務(wù)層代碼接口類com.bocnet.service.financial.CyberGiroService實現(xiàn)類com.bocnet.service.financial.impl.CyberGiroServiceImpl第四十八頁,共79頁。4、接口類方法的實現(xiàn)publicTransactiondoTransactionSubmit(…)對公網(wǎng)銀生成的一筆交易記入數(shù)據(jù)庫1.整理付款方、付費方、收款方信息2.他行收款的,驗cnaps號與收款行名稱之間是否匹配3.驗客戶業(yè)務(wù)編號防重4.設(shè)置費率5.限額檢查6.調(diào)用審批流程、置交易狀態(tài)7.寫數(shù)據(jù)庫并記錄日志第四十九頁,共79頁。5、service.xml文件配置抽象Bocnet服務(wù)<beanid="_AbstractBocnetService“class="com.bocnet.service.AbstractBocnetService"><refname="operatorDao">operatorDao</ref><refname="overseaProduct">overseaProduct</ref><refname=“bondProduct">bondProduct</ref><refname=“stockProduct">stockProduct</ref>抽象服務(wù)被注入全部的產(chǎn)品和DAO,所有的服務(wù)應(yīng)該繼承此服務(wù),從而可以訪問到需要的產(chǎn)品DAO。服務(wù)的配置及事務(wù)配置<beanid="CyberGiroService"parent="AbstractTransactionProxy"><beanid="_realCyberGiroService"name="target"class="com.bocnet.service.financial.impl.CyberGiroServiceImpl"parent="_AbstractBocnetService"/><propsname="transactionAttributes">
<paramname="doTransactionSubmit">PROPAGATION_REQUIRED,-serviceException</param></props></bean>第五十頁,共79頁。DAO層開發(fā)第五十一頁,共79頁。1、編寫DAO層要完成的幾件事情1.自己編寫或確認(rèn)(與服務(wù)層、展現(xiàn)層溝通)相應(yīng)實體類。
2.書寫sqlMap文件sql(可使用eclipse
abator插件生成后另行修改)
3.編寫DAO接口及實現(xiàn)類
4.編寫相關(guān)配置文件(sqlMapConfig.xml、dao.xml、service.xml)
下面以指令管理為例,簡述DAO層的工作內(nèi)容第五十二頁,共79頁。2、自己編寫或確認(rèn)相應(yīng)實體類此過程需要與服務(wù)層、展現(xiàn)層溝通實體類從需求上說是對業(yè)務(wù)實體的抽象,從技術(shù)上說就是簡單JavaBean,業(yè)務(wù)屬性構(gòu)成類的成員變量,再提供public的get/set方法就可以了。這一步重要的是要與服務(wù)展現(xiàn)層產(chǎn)品層有良好的溝通,變量命名合乎規(guī)范,實體類間繼承關(guān)系要合理、且要方便各層使用。第五十三頁,共79頁。3、書寫sql(具體語法請參考ibatis-guide)一般情況sql文件是放在sql-mapping目錄下。以cs-traninstSql.xml為例,BOCNET項目中一直使用命名空間,本例中namespace=“cs.traninst”,因此如果一個sql的ID是“selectTraninstByPk”,那么在系統(tǒng)中,該sql的唯一標(biāo)識就是”cs.traninst.selectTraninstByPk”第五十四頁,共79頁。4、編寫DAO接口及實現(xiàn)類一般情況,一個DAO是對應(yīng)一個數(shù)據(jù)庫表,本例中TraninstDao對應(yīng)數(shù)據(jù)庫CSTRANINST表,DAO提供增刪改查操作publicinterfaceTraninstDao//DAO接口聲明insert方法,一般由sql生成流水號,并通過該方法將流水號返回intinsertTraninst(Traninstobject);delete方法,返回刪除條數(shù),返回值由調(diào)用者判斷是否處理intdeleteTraninst(IntegertraninstId);update方法,返回更新條數(shù),返回值由調(diào)用者判斷是否處理intupdateTraninst(Traninstobject);select方法,一般需提供多種根據(jù)主鍵查詢交易實體類,一般是用于頁面顯示交易明細(xì)使用
TraninstselectTraninstByPk((IntegertraninstId);復(fù)雜一點的查詢List<Traninst>selectTraninstByDynamic(Mapparams);第五十五頁,共79頁。5、編寫DAO接口及實現(xiàn)類DAO實現(xiàn)類需繼承SqlMapClientDaoSupport
public
classTraninstDaoImplextendsSqlMapClientDaoSupport
implementsTraninstDao{ privateStringselectTraninstByDynamica="cs.traninst.selectTraninstByDynamica"; privateStringinsertTraninst="cs.traninst.insertTraninst"; publicintinsertTraninst(Traninsttraninst){ introws=super.getSqlMapClientTemplate().update(insertTraninst,traninst))
returnrows; } publicList<Traninst>getTraninstByDynamic(Mapparams){ List<Traninst>list=(List<Traninst>) super.getSqlMapClientTemplate().queryForList(selectTraninstByDynamica,params); returnlist; }第五十六頁,共79頁。6、編寫相關(guān)配置文件cs-traninstSql.xml<sqlMapnamespace="cs.traninst"><!--交易指令表-->
<resultMapid="Traninst"class="com.gcs.entity.cs.traninst.impl.TraninstImpl"><resultcolumn="TRANINST_ID"property="traninstId"/><resultcolumn="TRAN_DATE"property="tranDate"/>
<resultcolumn="CUSTACT_NO"property="custactNo"/><resultcolumn="RECEV_TIME"property="recevTime"jdbcType="DATE"/>
<resultcolumn=“TRANS_TYPE”property=“transType”/><!--交易類型編號-->
<resultcolumn=“TRAN_TYPE_NAME”property=“tranconf.tranTypeName”/><!--交易類型對象.類型名稱--><resultcolumn="YN_PRE_MATCH"property="tranconf.ynPreMatch"/>
<resultcolumn="EXCH_NO"property="exchNo"/><!--交易場所對象(BMEXCH交易場所)--><resultcolumn="EXCH_NAME"property="exchLoa.exchName"/>
<resultcolumn="SECU_NO"property="secuNo"/><!--成交證券代碼--><resultcolumn="SECU_NO"property="secuBase"select="bm.secuBase.getSecuBaseWithDeliveLoaById"/><!--成交證券代碼對象-->
<resultcolumn="STA"property="sta"/>
</resultMap>
<sqlid="baseField">t.TRANINST_ID , t.TRAN_DATE, t.CUSTACT_NO, t.RECEV_TIME, t.TRANS_TYPE, t.EXCH_NO, t.STA</sql>第五十七頁,共79頁。<sqlid="extField">cust.PORT_NAMEasPORT_NAME,tf.TRAN_TYPE_NAMEasTRAN_TYPE_NAME,tf.YN_PRE_MATCHasYN_PRE_MATCH,ex.EXCH_NAMEasEXCH_NAME,ex.EXCH_TYPEasEXCH_TYPE,ed.DELIV_NAMEasDELIV_NAME</sql>
<sqlid="extOuterJoin">leftouterjoinAMCUSTcustont.CUSTACT_NO=cust.CUSTACT_NOleftouterjoinBMEXCHexont.EXCH_NO=ex.EXCH_NO
leftouterjoinCSTRANCONFtfont.TRANS_TYPE=tf.TRAN_TYPE_NOandex.EXCH_TYPE=tf.EXCH_TYPE
leftouterjoinBMDELIVEedont.DELIV_NO=ed.DELIV_NO</sql><selectid="getTraninstSeq"resultClass="java.lang.Integer"> SELECTCSTRANINST_SEQ.NEXTVALAStraninstIdFROMDUAL</select>
<selectid="selectTraninstByPk"resultMap="Traninst"parameterClass="java.util.HashMap">select<includerefid="baseField"/>,<includerefid="extField"/>fromCSTRANINSTt<includerefid="extOuterJoin"/>wheret.TRANINST_ID=#traninstId#andt.TRAN_DATE=#tranDate#</select>第五十八頁,共79頁。<selectid="selectTraninstByDynamica"resultMap="Traninst"parameterClass="java.util.HashMap">select<includerefid="baseField"/>,<includerefid="extField"/>fromCSTRANINSTt<includerefid="extOuterJoin"/>where1=1<isNotEmptyproperty="traninstId">andt.TRANINST_ID=#traninstId#</isNotEmpty><isNotEmptyproperty="dealNo">andt.DEAL_NO=#dealNo#</isNotEmpty><isNotEmptyproperty="custactNo">andt.CUSTACT_NOLIKE'%'||#custactNo#||'%'</isNotEmpty><isNotEmptyproperty="portName">andcust.PORT_NAMELIKE'%'||#portName#||'%'</isNotEmpty><isNotEmptyproperty="exchNo">andt.EXCH_NO=#exchNo#</isNotEmpty><isNotEmptyproperty="tranTypeNo">andt.TRANS_TYPE=#tranTypeNo#</isNotEmpty><isNotEmptyproperty="beginDate"> andto_date(t.TRANS_DATE,'yyyy-MM-dd')>=trunc(#beginDate#)</isNotEmpty><isNotEmptyproperty="endDate"> andto_date(t.TRANS_DATE,'yyyy-MM-dd')<![CDATA[<=]]>trunc(#endDate#)</isNotEmpty><isNotEmptyproperty="sta">andt.STAIN($sta$)</isNotEmpty>ORDERBYt.TRANINST_IDDESC</select>第五十九頁,共79頁。6、編寫相關(guān)配置文件1sqlMapConfig.xml文件<sqlMapConfig>
<settingsuseStatementNamespaces="true"/>
。。。
<sqlMapresource="com/bocnet/core/config/sql-
mapping/cs-traninstSql.xml"/>
。。。</sqlMapConfig>第六十頁,共79頁。6、編寫相關(guān)配置文件2Dao.xml文件<config> <bean id="abstractdao“class="org.springframework.orm.ibatis.support.SqlMap ClientDaoSupport“abstract="true"> <refnam
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)待證合作協(xié)議文本
- 2025版土地抵押權(quán)抵押權(quán)抵押權(quán)抵押資產(chǎn)證券化合同模板3篇
- 2025年度智能家居系統(tǒng)研發(fā)與裝修設(shè)計合同2篇
- 2025年全球及中國1-戊基-1H-吲哚行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國汽車雙面膠帶行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國流媒體音視頻產(chǎn)品行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球船底噴氣推進(jìn)系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國游戲設(shè)計服務(wù)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年度股權(quán)代持與風(fēng)險控制協(xié)議書(個人股權(quán)轉(zhuǎn)讓與代持)4篇
- 2025年度大學(xué)學(xué)生心理健康服務(wù)合作協(xié)議
- 2025-2030年中國陶瓷電容器行業(yè)運(yùn)營狀況與發(fā)展前景分析報告
- 2025年山西國際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點提升(共500題)附帶答案詳解
- 二零二五年倉儲配送中心物業(yè)管理與優(yōu)化升級合同3篇
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報告
- 《小英雄雨來》讀書分享會
- 初中數(shù)學(xué)校本教材(完整版)
- 重慶市銅梁區(qū)2024屆數(shù)學(xué)八上期末檢測試題含解析
- 中央導(dǎo)管相關(guān)血流感染防控
- 光的偏振和晶體光學(xué)基礎(chǔ)課件
- 中科大光學(xué)講義08光的偏振
- 黑布林英語閱讀《小婦人》-中英伴讀
評論
0/150
提交評論