锘??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 GMThttp://m.tkk7.com/nighty/archive/2011/04/26/349050.htmlhttp://m.tkk7.com/nighty/comments/349050.htmlhttp://m.tkk7.com/nighty/archive/2011/04/26/349050.html#Feedback0http://m.tkk7.com/nighty/comments/commentRss/349050.htmlhttp://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ì)
    
 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鏂規(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 />
 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閲屽張鏈変粈涔堝尯鍒紵綆鍗曞氨鏄編銆傛牸寮忓拰娉ㄩ噴鍐欏ソ涓鐐瑰悓鏍峰緢瀹規(guī)槗鐞嗚В錛?

]]>
鍏充簬commons dbutils緇勪歡鐨勪竴涓皬緙洪櫡鍒嗘瀽http://m.tkk7.com/nighty/archive/2011/02/12/344155.html瀵掓綰?/dc:creator>瀵掓綰?/author>Sat, 12 Feb 2011 09:33:00 GMThttp://m.tkk7.com/nighty/archive/2011/02/12/344155.htmlhttp://m.tkk7.com/nighty/comments/344155.htmlhttp://m.tkk7.com/nighty/archive/2011/02/12/344155.html#Feedback6http://m.tkk7.com/nighty/comments/commentRss/344155.htmlhttp://m.tkk7.com/nighty/services/trackbacks/344155.html         閴翠簬鍓嶉潰娌℃湁鏃墮棿浜嗚В錛屽氨閮界矖鐣ヤ嬌鐢ㄤ簡涓婇潰閭g綺楁毚鐨刴ap.get("")鏉ュ鐞嗭紝鏈濂界殑鎯呭喌鏄dbutils緇勪歡鑳借嚜鍔ㄨ瘑鍒埌as綾誨瀷鐨勫垪鍚嶃備簬鏄湁絀轟簡灝變笓闂ㄧ湅浜嗙湅瀹冪殑婧愪唬鐮侊紝鍙戠幇鏈涓昏鐨勪竴孌典唬鐮佸涓嬶細(xì)
 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鏂囨。錛堝紑鍙戝仛涔呬簡瀹規(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视频| 国产无遮挡又黄又爽免费网站| 美国免费高清一级毛片| 亚洲一区二区三区国产精华液| 亚洲国产精品线在线观看| 亚洲中文字幕无码永久在线 |