锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
綾諱笌綾諱箣闂寸殑鍏崇郴瀵逛簬鐞嗚В闈㈠悜瀵硅薄鍏鋒湁寰堥噸瑕佺殑浣滅敤錛屼互鍓嶅湪闈㈣瘯鐨勬椂鍊欎篃緇忓父琚棶鍒拌繖涓棶棰橈紝鍦ㄨ繖閲屾垜灝變粙緇嶄竴涓嬨?br />綾諱笌綾諱箣闂村瓨鍦ㄤ互涓嬪叧緋?
UML鍥句笌搴旂敤浠g爜渚嬪瓙:
If you've already installed a prior version of Abator, simply run the Eclipse Install/Update tool and the new version will be found automatically. If you've not already installed Abator, then you can use the built in Eclipse install support by following these steps: 2銆佸畨瑁呭ソ鍚庡皢鍦∟ew鑿滃崟涓湅鍒頒竴涓柊鐨勬枃浠剁被鍨?font face="Courier New">Abator for iBATIS Configuration File錛屾鏄疉bator鐨勯厤緗枃浠訛紝閰嶇疆鏂囦歡鐨勮緇嗚鏄庤http://ibatis.apache.org/docs/tools/abator/ 聽聽聽 <javaModelGenerator targetPackage="com.dwerp.itatis.domain" targetProject="BhbManage" /> 聽聽聽 <table tableName="BHBGL"> 聽 </abatorContext> 4銆佸彸閿崟鍑婚厤緗枃浠訛紝鐐瑰嚮Generate iBatis Artifacts錛岀敓鎴愭枃浠躲?/font> 聽
姝ゆ枃涓虹綉緇滄枃绔犲紩鐢紝鍘熸枃閾炬帴涓?/font>
http://seagar.javaeye.com/blog/post/189580
綾諱笌綾誨叧緋葷殑UML鍥句笌浠g爜琛ㄧ幇
(1)娉涘寲(Generalization)
(2)鍏寵仈(Association)
(3)渚濊禆(Dependency)
(4)鑱氬悎(Aggregation)
1.娉涘寲(Generalization)
[娉涘寲]
琛ㄧず綾諱笌綾諱箣闂寸殑緇ф壙鍏崇郴錛屾帴鍙d笌鎺ュ彛涔嬮棿鐨勭戶鎵垮叧緋伙紝鎴栫被瀵規(guī)帴鍙g殑瀹炵幇鍏崇郴銆備竴鑸寲鐨勫叧緋繪槸浠庡瓙綾繪寚鍚戠埗綾葷殑錛屼笌緇ф壙鎴栧疄鐜扮殑鏂規(guī)硶鐩稿弽銆?br />[鍏蜂綋琛ㄧ幇]
鐖剁被 鐖剁被瀹炰緥錛漬ew 瀛愮被()
[UML鍥綸(鍥?.1)
鍥?.1Animal綾諱笌Tiger綾?Dog綾葷殑娉涘寲鍏崇郴
[浠g爜琛ㄧ幇]
2.渚濊禆(Dependency)
[渚濊禆]
瀵逛簬涓や釜鐩稿鐙珛鐨勫璞★紝褰撲竴涓璞¤礋璐f瀯閫犲彟涓涓璞$殑瀹炰緥錛屾垨鑰呬緷璧栧彟涓涓璞$殑鏈嶅姟鏃訛紝榪欎袱涓璞′箣闂翠富瑕佷綋鐜頒負渚濊禆鍏崇郴銆?br />[鍏蜂綋琛ㄧ幇]
渚濊禆鍏崇郴琛ㄧ幇鍦?font color="#ff0000">灞閮ㄥ彉閲?/font>錛?font color="#ff0000">鏂規(guī)硶鐨勫弬鏁?/font>錛屼互鍙婂闈欐佹柟娉曠殑璋冪敤
[鐜板疄渚嬪瓙]
姣斿璇翠綘瑕佸幓鎷ц灪涓濓紝浣犳槸涓嶆槸瑕佸熷姪(涔熷氨鏄緷璧?铻轟笣鍒(Screwdriver)鏉ュ府鍔╀綘瀹屾垚鎷ц灪涓?screw)鐨勫伐浣?br />[UML琛ㄧ幇](鍥?.2)
鍥?.2 Person綾諱笌Screwdriver綾葷殑渚濊禆鍏崇郴
[浠g爜琛ㄧ幇]
3.鍏寵仈(Association)
[鍏寵仈]
瀵逛簬涓や釜鐩稿鐙珛鐨勫璞★紝褰撲竴涓璞$殑瀹炰緥涓庡彟涓涓璞$殑涓浜涚壒瀹氬疄渚嬪瓨鍦ㄥ浐瀹氱殑瀵瑰簲鍏崇郴鏃訛紝榪欎袱涓璞′箣闂翠負鍏寵仈鍏崇郴銆?br />[鍏蜂綋琛ㄧ幇]
鍏寵仈鍏崇郴鏄嬌鐢?font color="#ff0000">瀹炰緥鍙橀噺鏉ュ疄鐜?br />[鐜板疄渚嬪瓙]
姣斿瀹㈡埛鍜岃鍗曪紝姣忎釜璁㈠崟瀵瑰簲鐗瑰畾鐨勫鎴鳳紝姣忎釜瀹㈡埛瀵瑰簲涓浜涚壒瀹氱殑璁㈠崟錛涘啀渚嬪鍏徃鍜屽憳宸ワ紝姣忎釜鍏徃瀵瑰簲涓浜涚壒瀹氱殑鍛樺伐錛屾瘡涓憳宸ュ搴斾竴鐗瑰畾鐨勫叕鍙?br />[UML鍥綸 (鍥?.3)
鍥?.3 鍏徃鍜屽憳宸ョ殑鍏寵仈鍏崇郴
[浠g爜琛ㄧ幇]
[鑱氬悎]
褰撳璞琚姞鍏ュ埌瀵硅薄B涓紝鎴愪負瀵硅薄B鐨勭粍鎴愰儴鍒嗘椂錛屽璞鍜屽璞涔嬮棿涓鴻仛闆嗗叧緋匯傝仛鍚堟槸鍏寵仈鍏崇郴鐨勪竴縐嶏紝鏄緝寮虹殑鍏寵仈鍏崇郴錛屽己璋冪殑鏄?font color="#ff0000">鏁翠綋涓?font color="#ff0000">閮ㄥ垎涔嬮棿鐨勫叧緋匯?br />[鍏蜂綋琛ㄧ幇]
涓庡叧鑱斿叧緋諱竴鏍鳳紝鑱氬悎鍏崇郴涔熸槸閫氳繃瀹炰緥鍙橀噺鏉ュ疄鐜拌繖鏍峰叧緋葷殑銆傚叧鑱斿叧緋誨拰鑱氬悎鍏崇郴鏉ヨ娉曚笂鏄病鍔炴硶鍖哄垎鐨勶紝浠?font color="#ff0000">璇箟涓婃墠鑳?font color="#ff0000">鏇村ソ鐨勫尯鍒?/font>涓よ呯殑鍖哄埆銆?br />[鍏寵仈涓庤仛鍚堢殑鍖哄埆]
(1)鍏寵仈鍏崇郴鎵娑夊強鐨勪袱涓璞℃槸澶勫湪鍚屼竴涓眰嬈′笂鐨勩傛瘮濡備漢鍜岃嚜琛岃濺灝辨槸涓縐嶅叧鑱斿叧緋伙紝鑰屼笉鏄仛鍚堝叧緋伙紝鍥犱負浜轟笉鏄敱鑷杞︾粍鎴愮殑銆?br />鑱氬悎鍏崇郴娑夊強鐨勪袱涓璞″浜庝笉騫崇瓑鐨勫眰嬈′笂錛屼竴涓唬琛ㄦ暣浣擄紝涓涓唬琛ㄩ儴鍒嗐傛瘮濡傜數(shù)鑴戝拰瀹冪殑鏄劇ず鍣ㄣ侀敭鐩樸佷富鏉夸互鍙婂唴瀛樺氨鏄仛闆嗗叧緋伙紝鍥犱負涓繪澘鏄數(shù)鑴戠殑緇勬垚閮ㄥ垎銆?br />(2)瀵逛簬鍏鋒湁鑱氶泦鍏崇郴錛堝挨鍏舵槸寮鴻仛闆嗗叧緋伙級鐨勪袱涓璞★紝鏁翠綋瀵硅薄浼氬埗綰﹀畠鐨勭粍鎴愬璞$殑鐢熷懡鍛ㄦ湡銆傞儴鍒嗙被鐨勫璞′笉鑳藉崟鐙瓨鍦紝瀹冪殑鐢熷懡鍛ㄦ湡渚濊禆浜庢暣浣撶被鐨勫璞$殑鐢熷懡鍛ㄦ湡錛屽綋鏁翠綋娑堝け錛岄儴鍒嗕篃灝遍殢涔嬫秷澶便傛瘮濡傚紶涓夌殑鐢?shù)鑴戣鍋蜂簡锛岄偅涔堢數(shù)鑴戠殑鎵鏈夌粍浠朵篃涓嶅瓨鍦ㄤ簡錛岄櫎闈炲紶涓変簨鍏堟妸涓浜涚數(shù)鑴戠殑緇勪歡錛堟瘮濡傜‖鐩樺拰鍐呭瓨錛夋媶浜嗕笅鏉ャ?br />[UML鍥綸(鍥?.4)
鍥?.3 鐢?shù)鑴戝拰缁勪欢鐨勮仛鍚堝叧绯?/font>
[浠g爜琛ㄧ幇]
]]>
iBatis DAO浜嬪姟鎺㈢儲錛坔ttp://www.tkk7.com/RongHao/archive/2006/01/20/28817.html錛?
浠婂ぉ緇х畫鐮旂┒浜咼PetStore鐨勬寔涔呭眰錛屽叾涓敱浜庣湅浜嗕竴綃囨枃绔犵殑璇錛屽鑷存垜瀵瑰叾涓殑浜嬪姟澶勭悊娣辮〃鎬鐤戙傞氳繃闃呰婧愪唬鐮佷笌鐪嬩笂闈袱綃囨枃绔狅紝瀵硅繖涓棶棰樻墠璁よ瘑娓呮銆傚拰鎴戝綋鍒濋鎯崇殑涓鑷淬?
闃呰鍏ㄦ枃
]]>
闃呰鍏ㄦ枃
]]>
浠婂ぉ鎴戝湪鐪婮petStore浠g爜鏃訛紝鍦ㄧ偣鍑?br />http://127.0.0.1:8083/JPetStore/shop/viewCategory.shtml?categoryId=BIRDS
鏃訛紝褰撹窡韙嚱鏁皏iewCategory鏃跺彂鐜版鏃禼ategoryID宸茬粡璧嬪間簡錛屾垜鍗存壘涓嶅埌鍦ㄤ粈涔堝湴鏂硅祴鍊肩殑錛屽ソ鏄姳璐逛簡涓鐣懆鎵с?br />鏌ョ湅姝ゆ閾炬帴瀵瑰簲鐨剆truts.xml聽聽聽聽<action聽path="/shop/viewCategory"聽type="org.apache.struts.beanaction.BeanAction"
聽聽聽聽聽聽聽聽聽聽聽聽name="catalogBean"聽scope="session"
聽聽聽聽聽聽聽聽聽聽聽聽validate="false">
聽聽聽聽聽聽<forward聽name="success"聽path="/catalog/Category.jsp"/>
姝ゆ椂鍑虹幇閿欒錛岄敊璇涓嬶細java.lang.IllegalArgumentException:聽Cannot聽invoke聽com.ibatis.jpetstore.presentation.CatalogBean.setCategory聽-聽argument聽type聽mismatch
聽聽聽聽org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
聽聽聽聽org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
聽聽聽聽org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
聽聽聽聽org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
聽聽聽聽org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
聽聽聽聽org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
聽聽聽聽org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
聽聽聽聽org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
聽聽聽聽org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
聽聽聽聽org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
聽聽聽聽org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
聽聽聽聽org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
聽聽聽聽javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
聽聽聽聽javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
//聽Process聽any聽ActionForm聽bean聽related聽to聽this聽request
ActionForm聽form聽=聽processActionForm(request,聽response,聽mapping);
processPopulate(request,聽response,聽form,聽mapping);
1錛夎皟鐢╬rocessActionForm( )鏂規(guī)硶媯鏌ユ槸鍚﹀瓨鍦ㄤ負ActionMapping閰嶇疆鐨凙ctionForm 銆傚鏋滃瓨鍦紝鍒欏湪鏈夋晥鍖?br />鍩熷唴鏌ユ壘鏄惁瀛樺湪璇ctionForm 鐨勫疄渚嬶紝瀛樺湪錛屽垯澶嶇敤錛屼笉瀛樺湪錛屽垯鍒涘緩涓涓疄渚嬨傜劧鍚庡皢瀹炰緥淇濆瓨涓庡啀閰嶇疆
鏂囦歡涓厤緗ソ鐨勬湁鏁堝尯鍩?request,session,application)鍐咃紝騫剁敤Action鍏冪礌鐨刵ame灞炴т綔涓鴻瀹炰緥鐨勫叧閿瓧銆?br />2錛夎皟鐢╬rocessPopulate( )鏂規(guī)硶錛屽鏋滃瓨鏉ュ瓨鍦ㄤ負ActionMapping閰嶇疆鐨凙ctionForm錛屽垯灝佽璇鋒眰瀵硅薄涓殑鏁版嵁
鍒癆ctionForm 涓紝鍦ㄨ繘琛屽皝瑁呬箣鍓嶏紝鍏堣皟鐢ˋctionForm 鐨剅eset( )鏂規(guī)硶榪涜灞炴у肩殑榛樿鍖栥?br />
鏍規(guī)嵁浠ヤ笂鐨勫垎鏋愶紝鍙緱鐭ワ紝鍦ㄨ皟鐢ㄩ摼鎺ュ墠struts妗嗘灦浼氳嚜鍔ㄧ殑灝嗘墍鏈夌殑璇鋒眰鍙傛暟灝佽鍏ユ寚瀹氱殑formbean涓傛墍浠ヨ姹傚弬鏁扮殑鍚嶇О搴旇鏄搴攆ormbean鐨勪竴涓睘鎬с?br />
榪欏氨鏄痵truts涓姹傚弬鏁扮殑澶勭悊榪囩▼銆備富瑕佹槸鎴戝struts榪樻病鏈夊畬鍏ㄦ帉鎻★紝鍔犱笂Net鐨勫獎鍝嶏紝鎵嶈姳璐逛簡涓鍦堝彂鐜拌繖涓師鍥犮?br />
]]>
鏌ョ湅JpetStore鐨凷truts.xml鍙互鍙戠幇錛屽畠鐨凙ction鍙湁涓涓紝鍗斥渙rg.apache.stuts.beanaction.Beanaction鈥濄傞氳繃Eclipse鏌ョ湅beanaction.jar鐨勬簮浠g爜錛屽彲浠ュ彂鐜癇eanaction緇ф壙涓庢櫘閫欰ction錛屽嵆鍏峰鏅氱殑action鐨勫姛鑳姐傞偅涔堝畠鏃犲叿浣揂ction鐨勫ゥ濡欏湪鍝紝緇х畫鐮旂┒BeanAction鐨勪唬鐮侊紝鎴彇BeanAction鐨別xcute鏂規(guī)硶涓牳蹇冮儴鍒嗕唬鐮佸涓嬶細聽/**//*閬嶅巻姝ゆ柟娉曠殑涓氬姟閫昏緫鍙煡錛?鐨勪紭鍏堢駭鏈楂橈紝濡傛灉鏄?錛屽垯涓嶈皟鐢ㄤ換浣曟柟娉曠洿鎺orward錛岀被浼間簬ForwardAction*/聽
private聽static聽final聽String聽NO_METHOD_CALL聽=聽"*";聽
鈥︹?聽
/**//*鎵鏈夌殑FormBean閮界戶鎵夸簬BaseBean*/聽
BaseBean聽bean聽=聽(BaseBean)聽form;聽
聽聽聽聽聽聽ActionContext.initCurrentContext(request,聽response);聽
聽聽聽聽聽聽if聽(bean聽!=聽null)聽
{聽
聽聽聽聽聽聽聽聽//聽Explicit聽Method聽Mapping聽
/**//*涓嬮潰鏄鏌truts.xml閰嶇疆涓槸鍚︽湁parameter灞炴?/span>*/聽
聽聽聽聽聽聽聽聽Method聽method聽=聽null;聽
聽聽聽聽聽聽聽聽String聽methodName聽=聽mapping.getParameter();聽
聽聽聽聽聽聽聽聽if聽(methodName聽!=聽null聽&&聽!NO_METHOD_CALL.equals(methodName))聽
{聽
聽聽聽聽聽聽聽聽聽聽try聽
{聽
/**//*閫氳繃鍙嶅皠錛屾牴鎹緱鍒扮殑鏂規(guī)硶鍚嶇О鍙栧緱鏂規(guī)硶鐨勫彞鏌?/span>*/聽
聽聽聽聽聽聽聽聽聽聽聽聽method聽=聽bean.getClass().getMethod(methodName,聽null);聽
聽聽聽聽聽聽聽聽聽聽聽聽synchronized聽(bean)聽
{聽
/**//*涓嬮潰鏄叧閿竴鍙ワ紝璋冪敤basebean鎷ユ湁鐨勬帴鍙ctionInterceptor鐨勫疄鐜癉efaultActionInterceptor錛屾潵瀹屾垚鍏蜂綋鏂規(guī)硶鐨勮皟鐢?/span>*/聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽forward聽=聽bean.getInterceptor().intercept(new聽ActionInvoker(bean,聽method));聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽聽聽聽聽聽聽聽聽鈥︹?.聽
/**//*鏃燩arameter灞炴э紝媯鏌ath璺緞鐨勬渶鍚庝竴涓?鍚庣殑鍚嶇О錛屽嵆涓鴻皟鐢ㄧ殑鏂規(guī)硶鍚?/span>*/聽
聽聽聽聽聽聽聽聽//聽Path聽Based聽Method聽Mapping聽
聽聽聽聽聽聽聽聽if聽(method聽==聽null聽&&聽!NO_METHOD_CALL.equals(methodName))聽
{聽
聽聽聽聽聽聽聽聽聽聽methodName聽=聽mapping.getPath();聽
聽聽聽聽聽聽聽聽聽聽if聽(methodName.length()聽>聽1)聽
{聽
聽聽聽聽聽聽聽聽聽聽聽聽int聽slash聽=聽methodName.lastIndexOf("/")聽+聽1;聽
聽聽聽聽聽聽聽聽聽聽聽聽methodName聽=聽methodName.substring(slash);聽
聽聽聽聽聽聽聽聽聽聽聽聽if聽(methodName.length()聽>聽0)聽
{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽try聽
{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽method聽=聽bean.getClass().getMethod(methodName,聽null);聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽synchronized聽(bean)聽
{聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽forward聽=聽bean.getInterceptor().intercept(new聽ActionInvoker(bean,聽method));聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽
聽聽聽聽聽聽聽聽聽聽聽聽聽鈥︹?.聽
/**//*鏍規(guī)嵁璋冪敤鏂規(guī)硶榪斿洖鐨凷tring錛屽緱鍒伴〉闈㈢殑杞Щ璺緞*/聽
return聽mapping.findForward(forward);聽
閫氳繃鐮旂┒涓婇潰榪欐浠g爜錛屾垜浠彲鐭ワ紝JpetStore涓病鏈夊叿浣揂ction瀹炵幇鐨勫叧閿師鍥犲嵆鍦ㄤ簬涓嬮潰榪欏嚑鍙?/**//*閫氳繃鍙嶅皠錛屾牴鎹緱鍒扮殑鏂規(guī)硶鍚嶇О鍙栧緱鏂規(guī)硶鐨勫彞鏌?/span>*/聽
聽聽聽聽聽聽聽聽聽聽聽聽method聽=聽bean.getClass().getMethod(methodName,聽null);聽
聽聽聽聽聽聽聽聽聽聽聽聽synchronized聽(bean)聽
{聽
/**//*涓嬮潰鏄叧閿竴鍙ワ紝璋冪敤basebean鎷ユ湁鐨勬帴鍙ctionInterceptor鐨勫疄鐜癉efaultActionInterceptor錛屾潵瀹屾垚鍏蜂綋鏂規(guī)硶鐨勮皟鐢?/span>*/聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽forward聽=聽bean.getInterceptor().intercept(new聽ActionInvoker(bean,聽method));聽
聽聽聽聽聽聽聽聽聽聽聽聽}聽
public聽String聽invoke()聽
{聽
聽聽聽聽try聽
{聽
聽聽聽聽聽聽return聽(String)聽method.invoke(bean,聽null);聽
聽聽聽聽}聽catch聽(Exception聽e)聽
{聽
聽聽聽聽聽聽throw聽new聽BeanActionException("Error聽invoking聽Action.聽聽Cause:聽"聽+聽e,聽e);聽
聽聽聽聽}聽
聽聽}聽
浠ヤ笂鏄暣涓猙eanaction鐨勫疄鐜版満鍒躲備釜浜烘劅瑙夋縐嶅疄鐜版柟娉曞浜庡紑鍙戣呰岃█宸茬粡綾諱技浜嶢SP.NET鐨?aspx涓?cs寮鍙戞ā寮忎簡銆備笅闈㈡槸閫氳繃瀹炰緥鏉ヨ鏄庝竴涓婤eanAction濡備綍鎺у埗formbean鐨?
聽
Struts-config.xml鐨勯厤緗噷鏈?縐嶆槧灝勬柟寮忥紝鏉ュ憡璇塀eanAction鎶婃帶鍒惰漿鍒板摢涓猣orm bean瀵硅薄鐨勫摢涓柟娉曟潵澶勭悊銆?
錛?錛塸arameter=鈥?鈥欑洿鎺ヨ煩杞紱錛?錛塒arameter涓惈鍏蜂綋鐨勬柟娉曞悕錛涳紙3錛塒ath涓渶鍚庝竴涓?鍚庣殑鏂規(guī)硶鍚?
浠ヨ繖涓姹傝繛鎺ヤ負渚媓ttp://localhost/jpetstore4/shop/viewOrder.shtml
1. URL Pattern
聽聽聽 <action聽path="/shop/viewOrder"聽type="com.ibatis.struts.BeanAction"
聽聽聽聽name="orderBean"聽scope="session"
聽聽聽聽validate="false">
聽聽聽聽<forward聽name="success"聽path="/order/ViewOrder.jsp"/>
聽聽</action>
聽
姝ょ鏂瑰紡琛ㄧず錛屾帶鍒跺皢琚漿鍙戝埌"orderBean"榪欎釜form bean瀵硅薄 鐨?viewOrder"鏂規(guī)硶錛堣涓猴級鏉ュ鐞嗐傛柟娉曞悕鍙?path"鍙傛暟鐨勪互"/"鍒嗛殧鐨勬渶鍚庝竴閮ㄥ垎銆?
2. Method Parameter聽
<action聽path="/shop/viewOrder"聽type="com.ibatis.struts.BeanAction"
聽聽聽聽name="orderBean"聽parameter="viewOrder"聽scope="session"
聽聽聽聽validate="false">
聽聽聽聽<forward聽name="success"聽path="/order/ViewOrder.jsp"/>
聽聽</action>
聽
姝ょ鏂瑰紡琛ㄧず錛屾帶鍒跺皢琚漿鍙戝埌"orderBean"榪欎釜form bean瀵硅薄鐨?viewOrder"鏂規(guī)硶錛堣涓猴級鏉ュ鐞嗐傞厤緗腑鐨?parameter"鍙傛暟琛ㄧずform bean綾諱笂鐨勬柟娉曘?parameter"鍙傛暟浼樺厛浜?path"鍙傛暟銆?
3. No Method call
聽<action聽path="/shop/viewOrder"聽type="com.ibatis.struts.BeanAction"
聽聽聽聽name="orderBean"聽parameter="*"聽scope="session"
聽聽聽聽validate="false">
聽聽聽聽<forward聽name="success"聽path="/order/ViewOrder.jsp"/>
聽聽</action>
姝ょ鏂瑰紡琛ㄧず錛宖orm bean涓婃病鏈変換浣曟柟娉曡璋冪敤銆傚鏋滃瓨鍦?name"灞炴э紝鍒檚truts鎶婅〃鍗曞弬鏁扮瓑鏁版嵁濉厖鍒癴orm bean瀵硅薄鍚庯紝鎶婃帶鍒惰漿鍙戝埌"success"銆傚惁鍒欙紝濡傛灉name涓虹┖錛屽垯鐩存帴杞彂鎺у埗鍒?success"銆?
榪欏氨鐩稿綋浜巗truts鍐呯疆鐨刼rg.apache.struts.actions.ForwardAction鐨勫姛鑳?
<action聽path="/shop/viewOrder"聽type="org.apache.struts.actions.ForwardAction"
聽聽聽聽parameter="/order/ViewOrder.jsp聽"聽scope="session"聽validate="false">
聽</action>
聽
聽
]]>
鑾峰緱
聽聽聽聽聽 http://ibatis.apache.org/abator.html
聽聽聽聽 Eclipse鍙互鑷姩鐨勮繘琛孶pdate鑾峰彇姝lugin錛屽畼鏂圭殑瀹夎姝ラAutomatic Eclipse Install
3銆佹柊寤轟竴涓厤緗枃浠訛紝榪涜淇敼錛屾牴鎹嚜宸辯殑瀹為檯闇姹傝繘琛屼慨鏀?br />鍏抽敭鐐癸細
1錛塲dbcconnection錛屾寜鐓т竴鑸殑閰嶇疆鍗沖彲錛岄渶瑕佽鏄庣殑鏄畠闇瑕佹寚瀹氳闂甁dbcDriver鐨刢lassPathEntry錛屽浜嶮sSqlServer鑰岃█錛岃灝嗚繖涓変釜jar鏂囦歡鍧囧寘鍚湪鍐咃紝鍚﹀垯浼氬嚭鐜癹dbc璁塊棶閿欒銆?br />2錛夐厤緗笁涓狿akage
3錛夐厤緗〃錛屾澶勯渶璇存槑鐨勬槸瀵逛簬MsSqlServer涓嶈兘鍐橳ableSchema錛屾垜鍒濇鎸囧畾TableSchema錛岀粨鏋滄湭鎵懼埌瀵瑰簲鐨勮〃
綆鍗曠殑閰嶇疆濡備笅錛屽鏉傜殑瑙侀厤緗枃浠剁殑璇︾粏璇存槑銆傜ず渚嬮厤緗枃浠跺涓?br /><abatorConfiguration>
聽 <abatorContext>聽聽聽 <!-- TODO: Add Database Connection Information -->
聽聽聽 <jdbcConnection driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver"
聽聽聽聽聽聽聽 connectionURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=whm;SelectMethod=cursor"
聽聽聽聽聽聽聽 userId="sa"
聽聽聽聽聽聽聽 password="sa">
聽聽聽聽聽 <classPathEntry location="C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/mssqlserver.jar" />
聽聽聽聽聽 <classPathEntry location="C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/msutil.jar" />
聽聽聽聽聽 <classPathEntry location="C:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/msbase.jar" />
聽聽聽 </jdbcConnection>
聽聽聽 <sqlMapGenerator targetPackage="com.dwerp.itatis.persistence.xml" targetProject="BhbManage" />
聽聽聽 <daoGenerator type="IBATIS" targetPackage="com.dwerp.itatis.persistence.sqlmapdao" targetProject="BhbManage" />
聽聽聽聽
聽聽聽 </table>
</abatorConfiguration>
]]>
1銆佷笅杞絠BAITS(http://ibatis.apache.org/javadownloads.cgi)
2銆佷笅杞絁PetStore-5.0(http://ibatis.apache.org/javadownloads.cgi)
鍑嗗宸ヤ綔瀹屾垚錛屼笅闈㈠紑濮嬪皢紺轟緥紼嬪簭杞Щ鍒癊clipse涓?br />1銆佸湪Eclipse涓柊寤轟竴涓┖鐨刉ebProject錛屽錛欽PetStore
2銆佸皢涓嬭澆鐨凧PetStore-5.0鏂囦歡澶圭殑鍐呭鎷瘋礉鑷矹PetStore錛屽叾涓敱浜嶦clipse榛樿鐨刉eb鏂囦歡澶規(guī)槸WebRoot鎵浠PetStore-5.0涓殑Web鏂囦歡鍗曠嫭鎷瘋礉鍒版柊寤虹殑Project鐨刉eb鏂囦歡澶筗ebRoot涓嬨傜畝鍗曠殑鏄錛屽氨鏄淇濊瘉絀虹殑WebProject涓殑鎵鎷ユ湁鏂囦歡妯″瀷涓嶅姩錛屽皢涓嬭澆鐨勫唴瀹規(guī)嫹璐濆埌鐩稿簲鐨勬枃浠跺す涓?br />3銆佸埛鏂癊clipse錛屾鏃朵細鐪嬪埌src涓嬫樉紺轟負閿欒錛岄敊璇殑鍘熷洜鏄鏃跺搴旂殑鍖呮湭寮曞叆錛岀敱浜嶦clipse榛樿鐨勬槸WebRoot/lib涓嬬殑鍖呮枃浠訛紝鎵浠ュ皢涓葷洰褰曚笅鍗矹PetStore/devlib涓嶫PetStore/lib寮曞叆鍒伴」鐩腑
鏈変袱縐嶆柟娉曪細鐩存帴灝嗘涓や釜鏂囦歡澶逛笅鐨勫唴瀹圭洿鎺ユ嫹璐濆埌JPetStore/WebRoot/lib涓嬶紝鎴栬咃紝閫氳繃Import鍛戒護寮曞叆
4銆佽嚦姝ゅ氨宸茬粡瀹屾垚欏圭洰榪佺Щ宸ヤ綔錛屼笅闈㈠氨鏄?br />1錛夊緩鏁版嵁搴擄紝閯欎漢鐢ㄧ殑鏄疢sSqlServer錛屽湪JPetStore/src/ddl涓湁鍚勭鏁版嵁搴撶殑sql鏂囦歡
2錛変慨鏀筰BATIS鐨刣atabase.propertis錛岃涓婄瘒鎷欎綔
3錛夊湪Eclipse閫氳繃Tomcat閮ㄧ講
鍗沖彲鐪嬪埌PetShop鐨勭綉绔欎簡
http://127.0.0.1:8083/JPetStore
甯屾湜瀵瑰拰鎴戜竴鏍風(fēng)殑鍒濆鑰呮湁鎵甯姪
]]>
1銆佸湪http://ibatis.apache.org/javadownloads.cgi涓嬭澆ibatis錛屾垜涓嬭澆鐨勬槸2.2.0錛岀敱浜庤繕娌℃湁鐪婼pring錛屾墍浠ヤ笅杞芥鐗堟湰錛屽甫 iBATIS DAO 妗嗘灦銆備互鍚庣増鏈兘涓嶅啀鍚湁姝ゆ鏋躲傝緗戠珯璇存槑錛?br />Note: iBATIS 2.2.0 is the last release that includes the iBATIS DAO framework. After 2.2.0, the DAO iBATIS framework is removed from the downloads. We suggest converting iBATIS framework DAOs to the Spring Framework.
2銆佷笅杞藉悗灝唋ib鏂囦歡澶逛笅鐨勪笁涓猨ar鏂囦歡鍔犲叆鏈哄櫒鐨凜lasspath涓?br />姝ゆ椂錛宨BATIS 鐨勬鏋跺凡緇忔惌寤哄ソ
涓嬮潰浠嬬粛涓涓嬪浣曡闂甅sSqlServer銆?br />1銆佹満鍣ㄥ凡緇忎笅杞戒簡Jdbc for MSsqlServer鐨刯ar鏂囦歡錛屽叡涓変釜鏂囦歡錛屽井杞綉绔欐湁涓嬭澆銆?br />2銆佸彲浠ラ氳繃Eclipse鑷甫鐨凞ataBase Explorer嫻嬭瘯鏄惁鑳借闂甅sSqlServer
姝ゆ椂錛岄氳繃iBATIS璁塊棶MsSqlServer鐨勫墠鏈熸潯浠跺潎宸茬粡鍑嗗濂斤紝涓嬮潰榪涜閰嶇疆
1銆侀厤緗畇ql-map-config.xml鏂囦歡錛屾牳蹇冮儴鍒嗗涓?br /><sqlMapConfig>
聽 <properties resource="com/zyque/struts/database.properties"/>
聽 <transactionManager type="JDBC">
聽聽聽 <dataSource type="SIMPLE">
聽聽聽聽聽 <property value="${driver}" name="JDBC.Driver"/>
聽聽聽聽聽 <property value="${url}" name="JDBC.ConnectionURL"/>
聽聽聽聽聽 <property value="${username}" name="JDBC.Username"/>
聽聽聽聽聽 <property value="${password}" name="JDBC.Password"/>
聽聽聽聽聽 <property name="JDBC.DefaultAutoCommit" value="true" />
聽聽聽 </dataSource>
聽 </transactionManager>
聽 <sqlMap resource="com/zyque/ibatis/BhbGl.xml"/>
聽
</sqlMapConfig>
2銆佷粠涓婂彲浠ョ湅鍑烘暟鎹簱璇誨彇鐨勬槸database.properties錛屾閰嶇疆濡備笅
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=whm;SelectMethod=cursor
username=sa
password=sa
姝ゅ娉ㄦ剰鐨勬槸鍦ㄨ闂甅sSqlServer鏃跺欙紝闇灝哠electMethod=cursor錛屽師鍥犺涓婄瘒鍗氬
閫氳繃榪欎袱姝ュ氨鍙互閫氳繃ibatis璁塊棶MsSqlServer浜?br />璁塊棶紺轟緥浠g爜錛堝弬鑰冪殑ibatis鐨勫叆闂ㄦ寚鍗楋紝ibatis瀹樻柟緗戠珯鏈変笅杞斤級錛屾澶勬湭瀵逛唬鐮佽繘琛屽姛鑳介殧紱誨皝瑁咃紝渚夸簬鍚戝瑬浜轟箣嫻佺殑鍒濆鑰呭涔?br />Bhbm elm = null;
String p_mc = "FM_BHJLDW";
String resource = "com/zyque/ibatis/sql-map-config.xml";
聽Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
elm = (Bhbm) sqlMap.queryForObject ("getBhbByName", p_mc);
涓婇潰婕旂ず鐨勪竴涓畝鍗曟煡璇紝鍏朵綑鐨勭ず渚嬪彲浠ョ湅鍏ラ棬鎸囧崡銆傚茍闈炴湰鏂囩殑閲嶇偣銆?br />
聽聽聽聽聽