锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品亚洲福利一区二区,亚洲av之男人的天堂网站,亚洲色一区二区三区四区http://www.tkk7.com/nighty/archive/2011/04/26/349050.html瀵掓綰?/dc:creator>瀵掓綰?/author>Tue, 26 Apr 2011 08:41:00 GMThttp://www.tkk7.com/nighty/archive/2011/04/26/349050.htmlhttp://www.tkk7.com/nighty/comments/349050.htmlhttp://www.tkk7.com/nighty/archive/2011/04/26/349050.html#Feedback0http://www.tkk7.com/nighty/comments/commentRss/349050.htmlhttp://www.tkk7.com/nighty/services/trackbacks/349050.html        寮曡█錛氭渶榪戝張鐢ㄥ埌dbutils錛屼箣鍓嶄竴鐩寸敤Map鏄犲皠鐨勬柟寮忓彇鍑簊elect鐨勭粨鏋滃啀鎵嬪伐鍋氳漿鎹€傛湁鍐欒繃涓綃囨枃绔犺MapHandler鏂瑰紡鐨勪竴涓己闄鳳細鍏充簬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鐨勫懡鍚嶄範鎯竴鑸槸楠嗗嘲鍐欐硶錛屼緥濡倁serId錛岄偅涔堟暟鎹簱涓氨蹇呴』瀹氫箟涓簎serId錛岃岄棶棰樺湪浜庯細鏈夋椂鍊欐垜浠渶瑕佹暟鎹簱涓瓧孌電殑瀹氫箟鏍煎紡涓嶫avaBean鐨勫懡鍚嶄笉涓鏍鳳紝姣斿鏁版嵁搴撳畾涔変負錛歶ser_id錛岃孞avaBean鍒欏畾涔変負userId
        鐪嬫簮浠g爜鍙兘鏈夌偣璐規椂闂達紝鍦ㄥ畼鏂圭殑example欏甸潰鐨勬渶涓嬮潰鏋滅劧鏈変竴孌靛叧浜庤嚜瀹氫箟BeanProcessor鐨勬寚寮曘傛憳褰曞嚭鏉ワ細

      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.


      澶ф鎰忔濆氨鏄彁渚涗簩縐嶆柟寮忥細涓縐嶅氨鏄渶鐩存帴鐨勶紝鐢╝s鍏抽敭瀛楁妸colName閲嶅懡鍚嶏紝鍙︿竴縐嶆柟寮忓氨鏄戶鎵緽eanProcessor綾伙紝閲嶅啓mapColumnsToProperties()鏂規硶銆?br />       閭e綋鐒舵槸絎簩縐嶆柟寮忔洿鍔犲叿鏈変唬琛ㄦс傚皾璇曚簡涓涓嬨備唬鐮佸涓嬶細
    
 1public 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鏂規硶鐨勯昏緫鏄粠鐖剁被鐨勬柟娉曚腑鐩存帴澶嶅埗鍑烘潵鐨勶紝鐒跺悗鍦ㄧ15琛岄偅閲屽彉浜嗕釜鎴忔硶錛岃繖閲岀殑columnName灝辨槸浠庢暟鎹簱涓鍑烘潵鐨勶紝鑷畾涔変竴涓猵rivate鏂規硶鐢ㄤ簬杞崲鍛藉悕錛岃繖閲屼綘灝卞彲浠ユ坊鍔犺嚜宸辯殑鍛藉悕綰︽潫銆備緥濡備笂闈㈠氨鏄妸 user_id 杞寲涓篔ava鐨勯獑宄板啓娉曪細userId
       鍐嶆繁鍏ヤ竴灞傛濊冿紝浣犲彲浠ュ湪榪欓噷榪涜鏇村鎵╁睍錛屼互渚胯鑷繁鍙互閫夋嫨涓嶅悓鐨勫懡鍚嶈漿鎹㈡柟寮忋傚畾涔変簡榪欎釜Processor涔嬪悗錛屼笅闈㈢湅鐪嬪浣曡皟鐢細
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 />
 1protected <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閲屽張鏈変粈涔堝尯鍒紵綆鍗曞氨鏄編銆傛牸寮忓拰娉ㄩ噴鍐欏ソ涓鐐瑰悓鏍峰緢瀹規槗鐞嗚В錛?

]]>
鍏充簬commons dbutils緇勪歡鐨勪竴涓皬緙洪櫡鍒嗘瀽http://www.tkk7.com/nighty/archive/2011/02/12/344155.html瀵掓綰?/dc:creator>瀵掓綰?/author>Sat, 12 Feb 2011 09:33:00 GMThttp://www.tkk7.com/nighty/archive/2011/02/12/344155.htmlhttp://www.tkk7.com/nighty/comments/344155.htmlhttp://www.tkk7.com/nighty/archive/2011/02/12/344155.html#Feedback6http://www.tkk7.com/nighty/comments/commentRss/344155.htmlhttp://www.tkk7.com/nighty/services/trackbacks/344155.html         閴翠簬鍓嶉潰娌℃湁鏃墮棿浜嗚В錛屽氨閮界矖鐣ヤ嬌鐢ㄤ簡涓婇潰閭g綺楁毚鐨刴ap.get("")鏉ュ鐞嗭紝鏈濂界殑鎯呭喌鏄dbutils緇勪歡鑳借嚜鍔ㄨ瘑鍒埌as綾誨瀷鐨勫垪鍚嶃備簬鏄湁絀轟簡灝變笓闂ㄧ湅浜嗙湅瀹冪殑婧愪唬鐮侊紝鍙戠幇鏈涓昏鐨勪竴孌典唬鐮佸涓嬶細
 1public 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鏂囨。錛堝紑鍙戝仛涔呬簡瀹規槗閬楀繕鍩虹錛夛紝鏋滅劧錛屽師鏉?strong>getColumnName()鏄細鑾峰彇鎸囧畾鍒楃殑鍚嶇О錛?/span>鑰宎s鍏抽敭瀛椾箣鍚庯紝浣垮垪鍚嶇О鍙樻垚鐢ㄤ簬鏄劇ず鐨勬剰涔夛紝榪欎釜鏃跺欏簲璇ヤ嬌鐢?strong>getColumnLabel()錛?span style="color: #339966">鑾峰彇鐢ㄤ簬鎵撳嵃杈撳嚭鍜屾樉紺虹殑鎸囧畾鍒楃殑寤鴻鏍囬銆傚緩璁爣棰橀氬父鐢?SQL AS 瀛愬彞鏉ユ寚瀹氥傚鏋滄湭鎸囧畾 SQL AS錛屽垯浠?getColumnLabel 榪斿洖鐨勫煎皢鍜?getColumnName 鏂規硶榪斿洖鐨勫肩浉鍚?/span>銆傝嚜宸辨墜鍔ㄨ瘯楠屼簡涓涓嬶紝鏋滅劧濡傛墍鏂欙紝闂灝卞嚭鍦ㄨ繖閲屻?br />         鎵浠ュ憿錛屽鏋滄兂瑕乨butils鍦ㄨ嚜鍔ㄨ漿鎹ap鍙奙apList鏃惰兘璇嗗埆鑱氬悎鍑芥暟鐨勫垪鍚嶏紝閭d箞鏈濂界殑鍋氭硶灝辨槸閲嶈澆榪欑鏂瑰紡錛屾噿涓鐐圭殑錛屼綘灝卞共鑴嗕慨鏀逛笂闈㈤偅孌典唬鐮侊紝璁╁畠鍒ゆ柇鏄惁浣跨敤浜哸s鍏抽敭瀛椼備釜浜烘殏鏃舵悶涓嶆竻妤氬畼鏂逛負浠涔堟病鏈夎冭檻榪欎竴姝ワ紝鏈夋椂闂村啀鎬濊冧竴涓嬶紒

]]>
主站蜘蛛池模板: 亚洲丰满熟女一区二区v| 日本亚洲成高清一区二区三区| 精品亚洲A∨无码一区二区三区| 国产成人午夜精品免费视频| 国产精品黄页在线播放免费| 亚洲精品美女网站| 女人张腿给男人桶视频免费版| 日韩精品亚洲aⅴ在线影院| 老司机午夜在线视频免费| 亚洲免费视频网址| 亚洲av午夜成人片精品电影 | 免费人成又黄又爽的视频在线电影| 免费一级毛片无毒不卡| 午夜毛片不卡高清免费| 亚洲成AV人片在WWW| 777爽死你无码免费看一二区| 夜夜亚洲天天久久| 国产在线国偷精品产拍免费| 亚洲AV无码不卡在线播放| 日韩电影免费在线观看网址 | 成人啪精品视频免费网站| 久久精品国产亚洲av麻| 久久精品私人影院免费看| 亚洲熟妇av一区| 青青草国产免费久久久91| 深夜a级毛片免费视频| 久久亚洲精品视频| 国产成人午夜精品免费视频| 国产青草亚洲香蕉精品久久| 成全影视免费观看大全二| 国产亚洲精品AAAA片APP| 午夜影视在线免费观看| 一级美国片免费看| 久久久久亚洲精品日久生情| 韩国二级毛片免费播放| 中文字幕免费在线看电影大全| 久久亚洲AV无码西西人体| 91精品导航在线网址免费| 亚洲色无码专区一区| 国产成人麻豆亚洲综合无码精品| 91精品成人免费国产片|