锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲私人国产精品,国产精品亚洲а∨无码播放,亚洲AV香蕉一区区二区三区 http://m.tkk7.com/nighty/archive/2011/04/26/349050.html瀵掓綰?/dc:creator>瀵掓綰?/author>Tue, 26 Apr 2011 08:41:00 GMT http://m.tkk7.com/nighty/archive/2011/04/26/349050.html http://m.tkk7.com/nighty/comments/349050.html http://m.tkk7.com/nighty/archive/2011/04/26/349050.html#Feedback 0 http://m.tkk7.com/nighty/comments/commentRss/349050.html http://m.tkk7.com/nighty/services/trackbacks/349050.html 寮曡█錛氭渶榪戝張鐢ㄥ埌dbutils錛屼箣鍓嶄竴鐩寸敤Map鏄犲皠鐨勬柟寮忓彇鍑簊elect鐨勭粨鏋滃啀鎵嬪伐鍋氳漿鎹€傛湁鍐欒繃涓綃囨枃绔犺MapHandler鏂瑰紡鐨勪竴涓己闄鳳細(xì)鍏充簬commons dbutils緇勪歡鐨勪竴涓皬緙洪櫡鍒嗘瀽 錛岀敤榪欑鏂瑰紡錛屽湪欏圭洰涓嶅ぇ鐨勬儏鍐典笅錛屽啓涓浜汳ap鍒癑avaBean鐨勮漿鎹唬鐮佸伐浣滈噺涓嶅ぇ錛屼絾鏄湪鏁版嵁搴撹〃榪囧騫朵笖琛ㄤ腑鐨勫瓧孌佃繃澶氱殑鎯呭喌涓嬶紝榪欑閲嶅鐨剆etter鎰熻鏈夌偣鐑︺備簬鏄張閲嶆柊鎬濊冧簡BeanHandler鍜孊eanListHandler鐨勬儏鍐碉紝dbutils搴曞眰鏄犲皠鐢ㄧ殑鍙嶅皠錛屾ц兘涓婅偗瀹氭湁鎹熷け錛屼笉榪囧湪澶у鏁伴」鐩妯′笉鏄緢澶х殑鎯呭喌涓嬶紝榪欑偣鎹熷け鍙互蹇界暐錛屽甫鏉ョ殑浠g爜鍑忓皯鍗存槸姣旇緝鍙銆?br />
闂鍦ㄥ摢閲岋紵鍏堢湅涓孌靛畼鏂圭殑紺轟緥浠g爜錛?br />
QueryRunner run = new QueryRunner(dataSource);
// Use the BeanHandler implementation to convert the first
// ResultSet row into a Person JavaBean.
ResultSetHandler < Person > h = new BeanHandler < Person > (Person. class );
// Execute the SQL statement with one replacement parameter and
// return the results in a new Person object generated by the BeanHandler.
Person p = run.query(
" SELECT * FROM Person WHERE name=? " , h, " John Doe " );
榪欓噷鏈変釜鍦版柟鏈夌害鏉燂紝灝辨槸瑕佹眰紺轟緥涓殑JavaBean綾籔erson涓殑瀛楁瀹氫箟瑕佸拰鏁版嵁搴撶殑瀛楁瀹氫箟涓鑷淬侸ava鐨勫懡鍚嶄範(fàn)鎯竴鑸槸楠嗗嘲鍐欐硶錛屼緥濡倁serId錛岄偅涔堟暟鎹簱涓氨蹇呴』瀹氫箟涓簎serId錛岃岄棶棰樺湪浜庯細(xì)鏈夋椂鍊欐垜浠渶瑕佹暟鎹簱涓瓧孌電殑瀹氫箟鏍煎紡涓嶫avaBean鐨勫懡鍚嶄笉涓鏍鳳紝姣斿鏁版嵁搴撳畾涔変負(fù)錛歶ser_id錛岃孞avaBean鍒欏畾涔変負(fù)userId
鐪嬫簮浠g爜鍙兘鏈夌偣璐規(guī)椂闂達(dá)紝鍦ㄥ畼鏂圭殑example欏甸潰鐨勬渶涓嬮潰鏋滅劧鏈変竴孌靛叧浜庤嚜瀹氫箟BeanProcessor鐨勬寚寮曘傛憳褰曞嚭鏉ワ細(xì)
BasicRowProcessor uses a BeanProcessor to convert ResultSet columns into JavaBean properties. You can subclass and override processing steps to handle datatype mapping specific to your application. The provided implementation delegates datatype conversion to the JDBC driver.
BeanProcessor maps columns to bean properties as documented in the BeanProcessor.toBean() javadoc. Column names must match the bean's property names case insensitively. For example, the firstname column would be stored in the bean by calling its setFirstName() method. However, many database column names include characters that either can't be used or are not typically used in Java method names. You can do one of the following to map these columns to bean properties:
1. Alias the column names in the SQL so they match the Java names: select social_sec# as socialSecurityNumber from person
2. Subclass BeanProcessor and override the mapColumnsToProperties() method to strip out the offending characters.
澶ф鎰忔濆氨鏄彁渚涗簩縐嶆柟寮忥細(xì)涓縐嶅氨鏄渶鐩存帴鐨勶紝鐢╝s鍏抽敭瀛楁妸colName閲嶅懡鍚嶏紝鍙︿竴縐嶆柟寮忓氨鏄戶鎵緽eanProcessor綾伙紝閲嶅啓mapColumnsToProperties()鏂規(guī)硶銆?br />
閭e綋鐒舵槸絎簩縐嶆柟寮忔洿鍔犲叿鏈変唬琛ㄦс傚皾璇曚簡涓涓嬨備唬鐮佸涓嬶細(xì)
1 public class CustomBeanProcessor extends BeanProcessor {
2
3 @Override
4 protected int [] mapColumnsToProperties(ResultSetMetaData rsmd,
5 PropertyDescriptor[] props) throws SQLException {
6 int cols = rsmd.getColumnCount();
7 int columnToProperty[] = new int [cols + 1 ];
8 Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
9
10 for ( int col = 1 ; col <= cols; col ++ ) {
11 String columnName = rsmd.getColumnLabel(col);
12 if ( null == columnName || 0 == columnName.length()) {
13 columnName = rsmd.getColumnName(col);
14 }
15 columnName = colNameConvent(columnName); // 鍦ㄨ繖閲岃繘琛屾暟鎹簱琛╟olumnName鐨勭壒孌婂鐞?/span>
16 for ( int i = 0 ; i < props.length; i ++ ) {
17
18 if (columnName.equalsIgnoreCase(props[i].getName())) {
19 columnToProperty[col] = i;
20 break ;
21 }
22 }
23 }
24 return columnToProperty;
25 }
26
27 /** */ /**
28 * 鏁版嵁搴撳垪鍚嶉噸鏂扮害瀹?br />
29 * @param columnName
30 * @return
31 */
32 private String colNameConvent(String columnName) {
33 String[] strs = columnName.split( " _ " );
34 String conventName = "" ;
35 for ( int i = 0 ; i < strs.length; i ++ ) {
36 conventName += StringUtils.capitalize(strs[i]);
37 }
38 StringUtils.uncapitalize(conventName);
39 return conventName;
40 }
41 }
娉ㄦ剰mapColumnsToProperties鏂規(guī)硶鐨勯昏緫鏄粠鐖剁被鐨勬柟娉曚腑鐩存帴澶嶅埗鍑烘潵鐨勶紝鐒跺悗鍦ㄧ15琛岄偅閲屽彉浜嗕釜鎴忔硶錛岃繖閲岀殑columnName灝辨槸浠庢暟鎹簱涓鍑烘潵鐨勶紝鑷畾涔変竴涓猵rivate鏂規(guī)硶鐢ㄤ簬杞崲鍛藉悕錛岃繖閲屼綘灝卞彲浠ユ坊鍔犺嚜宸辯殑鍛藉悕綰︽潫銆備緥濡備笂闈㈠氨鏄妸 user_id 杞寲涓篔ava鐨勯獑宄板啓娉曪細(xì)userId
鍐嶆繁鍏ヤ竴灞傛濊冿紝浣犲彲浠ュ湪榪欓噷榪涜鏇村鎵╁睍錛屼互渚胯鑷繁鍙互閫夋嫨涓嶅悓鐨勫懡鍚嶈漿鎹㈡柟寮忋傚畾涔変簡榪欎釜Processor涔嬪悗錛屼笅闈㈢湅鐪嬪浣曡皟鐢細(xì)
Connection conn = ConnectionManager.getInstance().getConnection();
QueryRunner qr = new QueryRunner();
CustomBeanProcessor convert = new CustomBeanProcessor();
RowProcessor rp = new BasicRowProcessor(convert);
BeanHandler < User > bh = new BeanHandler < User > (User. class , rp);
User u = qr.query(conn, sql, bh, params);
DbUtils.close(conn);
鏄笉鏄潪甯哥伒媧伙紵濡傛灉鏄兂榪斿洖List緇撴灉鐨勶紝灝辨妸BeanHandler鏇挎崲鎴怋eanListHander綾伙紝榪樺彲浠ュ啀榪涗竴姝ュ皝瑁呰繖浜涙搷浣滐紝鎶借薄鍒板叕鍏辨ā鍧椾腑鍘伙紝璁╁閮ㄧ洿鎺ヤ紶鍏ql璇彞鍜孋lass灝辮兘鐩存帴榪斿洖鎯寵鐨勭粨鏋滐紝褰撶劧浣犲緱澧炲姞娉涘瀷鐨勫畾涔夈傚悓鏍蜂婦涓涓皝瑁呯殑渚嬪瓙錛?br />
1 protected < T > List < T > selectBeanList(Connection conn, String sql, Class < T > type,
2 Object[] params) throws Exception {
3 log.debug(" select sql:[ " + sql + " ] " );
4 QueryRunner qr = new QueryRunner();
5 CustomBeanProcessor convert = new CustomBeanProcessor();
6 RowProcessor rp = new BasicRowProcessor(convert);
7 ResultSetHandler< List < T >> bh = new BeanListHandler < T > (type, rp);
8 List< T > list = qr.query(conn, sql, bh, params);
9 return list;
10 }
鑷充簬涓轟粈涔堟墿灞曡繖涓柟娉曞氨鍙互瀹炵幇榪欎釜閫昏緫灝卞緱鍘昏窡婧愪唬鐮佺湅瀹冪殑鍐呴儴瀹炵幇錛岀敤浜嗕竴浜汮avaBean鐨勫鐞嗗拰鍙嶆槧鐨勬妧宸ф潵鍋氱殑銆傚叿浣撳氨涓嶈銆?br />
鎬葷粨錛歝ommons緇勪歡閮借璁″緱闈炲父濂斤紝鍙墿灞曟у拰瀹炵敤鎬ч兘闈炲父楂樸傝櫧鐒朵笂闈婦渚嬪疄鐜頒簡杞崲閫昏緫鐨勬浛鎹紝浣嗘槸浠嶇劧闇瑕佸紑鍙戜漢鍛樺湪璁捐鏁版嵁搴撶殑鏃跺欏拰鍐橨avaBean鏃墮兘瑕佷弗鏍煎仛濂借鑼冿紝閬垮厤浜х敓涓嶅繀瑕佺殑闂銆傝繖鏂歸潰Ruby On Rails灝辯洿鎺ュ唴閮ㄥ疄鐜幫紝鍔ㄦ佽璦鐨勪紭鐐圭壒鍒兘浣撶幇錛屽悓鏃跺己鍒朵綘鍦ㄨ璁℃椂蹇呴』鐢ㄨ繖縐嶆柟寮忥紝鍏稿瀷鐨勭害瀹氫紭浜庨厤緗師鍒欍傚綋鐒訛紝鍦╠butils閲屼綘鎰挎剰浜岀瀛楁鍚嶉兘涓鏍蜂篃鏃犲彲鍘氶潪銆?br />
緙虹偣錛欱eanProcessor鏄笉鏀寔鍏寵仈鏌ヨ鐨勶紝鎵浠ヤ笂闈㈢殑鏂瑰紡涔熷彧鑳藉眬闄愪簬鍗曡〃鐨勮漿鎹紝榪欑偣灝變笉濡俶yBatis鍜孒ibernate錛屽綋鐒剁敤榪欎簩涓氨寮曞叆浜嗕竴浜涘鏉傛э紝濡備綍鏉冭 闇瑕佽嚜宸辮 閲忥紝鍝釜鐢ㄥ緱濂介兘涓鏍楓傛湰浜哄氨涓嶅枩嬈yBatis閭g鎶奡QL鍐欏埌XML涓殑鏂瑰紡錛岃榪囧お澶嶆潅鐨凷QL鏈緇堝湪XML閲岄潰鍙樺緱闈㈢洰鍏ㄩ潪錛屽鏋滄槸鎺ユ墜鍒漢鐨勪唬鐮侊紝鏄緢鐥涜嫤鐨勶紝鑰屼笖浣犳棤娉曢伩鍏嶅彧淇敼XML鑰屼笉鏀笿ava錛屾棦鐒朵簩鑰呴兘瑕佹敼錛岄偅鐩存帴鍐橨ava閲屽張鏈変粈涔堝尯鍒紵綆鍗曞氨鏄編銆傛牸寮忓拰娉ㄩ噴鍐欏ソ涓鐐瑰悓鏍峰緢瀹規(guī)槗鐞嗚В錛?
]]>鍏充簬commons dbutils緇勪歡鐨勪竴涓皬緙洪櫡鍒嗘瀽 http://m.tkk7.com/nighty/archive/2011/02/12/344155.html瀵掓綰?/dc:creator>瀵掓綰?/author>Sat, 12 Feb 2011 09:33:00 GMT http://m.tkk7.com/nighty/archive/2011/02/12/344155.html http://m.tkk7.com/nighty/comments/344155.html http://m.tkk7.com/nighty/archive/2011/02/12/344155.html#Feedback 6 http://m.tkk7.com/nighty/comments/commentRss/344155.html http://m.tkk7.com/nighty/services/trackbacks/344155.html
閴翠簬鍓嶉潰娌℃湁鏃墮棿浜嗚В錛屽氨閮界矖鐣ヤ嬌鐢ㄤ簡涓婇潰閭g綺楁毚鐨刴ap.get("")鏉ュ鐞嗭紝鏈濂界殑鎯呭喌鏄dbutils緇勪歡鑳借嚜鍔ㄨ瘑鍒埌as綾誨瀷鐨勫垪鍚嶃備簬鏄湁絀轟簡灝變笓闂ㄧ湅浜嗙湅瀹冪殑婧愪唬鐮侊紝鍙戠幇鏈涓昏鐨勪竴孌典唬鐮佸涓嬶細(xì)
1 public Map < String, Object > toMap(ResultSet rs) throws SQLException {
2 Map< String, Object > result = new CaseInsensitiveHashMap();
3 ResultSetMetaData rsmd = rs.getMetaData();
4 int cols = rsmd.getColumnCount();
5
6 for ( int i = 1 ; i <= cols; i ++ ) {
7 result.put(rsmd.getColumnName(i), rs.getObject(i));
8 }
9
10 return result;
11 }
CaseInsensitiveHashMap鏄痙butils鑷畾涔夌殑涓涓狹ap錛屽拷鐣ラ敭澶у皬鍐欑殑K-V瀛楀吀錛屼絾鏄痥ey浣跨敤鐨勬槸ResultSetMetaData.getColumnName()錛屾垜鎯抽棶棰樺ぇ姒傚嚭鍦ㄨ繖閲岋紝浜庢槸璁ょ湡緲諱簡緲籮ava鐨刟pi鏂囨。錛堝紑鍙戝仛涔呬簡瀹規(guī)槗閬楀繕鍩虹錛夛紝鏋滅劧錛屽師鏉?strong>getColumnName()鏄細(xì)鑾峰彇鎸囧畾鍒楃殑鍚嶇О錛?/span>鑰宎s鍏抽敭瀛椾箣鍚庯紝浣垮垪鍚嶇О鍙樻垚鐢ㄤ簬鏄劇ず鐨勬剰涔夛紝榪欎釜鏃跺欏簲璇ヤ嬌鐢?strong>getColumnLabel()錛?span style="color: #339966">鑾峰彇鐢ㄤ簬鎵撳嵃杈撳嚭鍜屾樉紺虹殑鎸囧畾鍒楃殑寤鴻鏍囬銆傚緩璁爣棰橀氬父鐢?SQL AS
瀛愬彞鏉ユ寚瀹氥傚鏋滄湭鎸囧畾 SQL AS
錛屽垯浠?getColumnLabel
榪斿洖鐨勫煎皢鍜?getColumnName
鏂規(guī)硶榪斿洖鐨勫肩浉鍚?/span>銆傝嚜宸辨墜鍔ㄨ瘯楠屼簡涓涓嬶紝鏋滅劧濡傛墍鏂欙紝闂灝卞嚭鍦ㄨ繖閲屻?br />
鎵浠ュ憿錛屽鏋滄兂瑕乨butils鍦ㄨ嚜鍔ㄨ漿鎹ap鍙?qiáng)MapList鏃惰兘璇嗗埆鑱氬悎鍑芥暟鐨勫垪鍚嶏紝閭d箞鏈濂界殑鍋氭硶灝辨槸閲嶈澆榪欑鏂瑰紡錛屾噿涓鐐圭殑錛屼綘灝卞共鑴嗕慨鏀逛笂闈㈤偅孌典唬鐮侊紝璁╁畠鍒ゆ柇鏄惁浣跨敤浜哸s鍏抽敭瀛椼備釜浜烘殏鏃舵悶涓嶆竻妤氬畼鏂逛負(fù)浠涔堟病鏈夎冭檻榪欎竴姝ワ紝鏈夋椂闂村啀鎬濊冧竴涓嬶紒
]]>
主站蜘蛛池模板:
91亚洲国产成人久久精品网站 |
亚洲精品乱码久久久久久V |
青草草色A免费观看在线 |
亚洲人成网站18禁止 |
亚洲aⅴ天堂av天堂无码麻豆 |
国产一区二区三区免费看 |
国产免费牲交视频免费播放 |
亚洲精品中文字幕乱码影院 |
国产片免费福利片永久 |
免费福利在线视频 |
亚洲乱理伦片在线观看中字 |
亚洲精品夜夜夜妓女网 |
在线a人片天堂免费观看高清 |
两个人看的www高清免费视频 |
亚洲精品成a人在线观看☆ |
日韩亚洲人成在线综合日本 |
四虎影视免费在线 |
久久国产免费一区 |
免费播放美女一级毛片 |
亚洲一区二区三区播放在线 |
国产aⅴ无码专区亚洲av麻豆 |
成人黄动漫画免费网站视频 |
国产色无码精品视频免费 |
色欲aⅴ亚洲情无码AV |
亚洲国色天香视频 |
国产亚洲成av片在线观看 |
国产成人免费a在线视频色戒 |
69免费视频大片 |
伊人免费在线观看高清版 |
久久精品国产亚洲AV |
亚洲一区二区三区久久 |
久久亚洲国产精品五月天 |
亚洲第一视频在线观看免费 |
成人免费无码大片A毛片抽搐 |
91视频免费网址 |
免费观看91视频 |
国产无遮挡又黄又爽免费网站 |
美国免费高清一级毛片 |
亚洲一区二区三区国产精华液 |
亚洲国产精品线在线观看 |
亚洲中文字幕无码永久在线
|