隨筆-42  評(píng)論-349  文章-4  trackbacks-0

          (殘夢追月原創(chuàng),轉(zhuǎn)載請(qǐng)注明)

          本文地址:http://www.aygfsteel.com/cmzy/archive/2008/09/11/228271.html?

          ?? 今天看SpringAPI的時(shí)候無意中發(fā)現(xiàn)了Spring2.5新增了一個(gè)RowMapper的實(shí)現(xiàn)類org.springframework.jdbc.core.BeanPropertyRowMapper,但是貌似Spring的refrence里面根本就沒提及到。Google了一下……貌似也莫得多少文檔。

          ??? Spring API Doc的說明如下:

          ?? RowMapper implementation that converts a row into a new instance of the specified mapped target class. The mapped target class must be a top-level class and it must have a default or no-arg constructor.

          ?? Column values are mapped based on matching the column name as obtained from result set metadata to public setters for the corresponding properties. The names are matched either directly or by transforming a name separating the parts with underscores to the same name using "camel" case.

          ?? Mapping is provided for fields in the target class for many common types, e.g.: String, boolean, Boolean, byte, Byte, short, Short, int, Integer, long, Long, float, Float, double, Double, BigDecimal, java.util.Date, etc.

          ?? To facilitate mapping between columns and fields that don't have matching names, try using column aliases in the SQL statement like "select fname as first_name from customer".

          ?? Please note that this class is designed to provide convenience rather than high performance. For best performance consider using a custom RowMapper.


          ?? 也就說,它可以把ResultSet和實(shí)體類的字段進(jìn)行實(shí)現(xiàn)自動(dòng)映射。

          ?? 一個(gè)具體的例子如下:

          ?? 假如有這樣一個(gè)表,SQL-Server2000的建表腳本如下:

          ?? 為此,我們編寫一個(gè)對(duì)應(yīng)的實(shí)體類admin,它是一個(gè)標(biāo)準(zhǔn)的javaBean,代碼如下:

          ?? 以前,在相應(yīng)的AdminDAO中,我們以前是這么做滴,看起來很麻煩,如果一個(gè)表的字段很多的話,就要人命了,我們必須不停的set、get:

          ?? 可見,我們必須的手工對(duì)ResultSet和Admin進(jìn)行映射。而現(xiàn)在,我們只是需要這樣:

          ??? 呵呵,只是一句話就完全搞定了……Sprin會(huì)為我們自動(dòng)映射……顯然這樣比以前方便多了。我們還可以把它用在其它任何使用RowMapper的場合……畢竟它繼承自RowMapper……

          ??? 需要注意的是:BeanPropertyRowMapper是根據(jù)字段名和實(shí)體類中的標(biāo)準(zhǔn)Setter方法進(jìn)行映射滴。也就是說,我們需要使表中的字段名和實(shí)體類的成員變量名稱一致。





          By:殘夢追月
          posted on 2008-09-11 09:33 殘夢追月 閱讀(6190) 評(píng)論(8)  編輯  收藏 所屬分類: Spring

          評(píng)論:
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2008-09-11 13:18 | super2
          還是很生硬  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2008-09-11 18:17 | 殘夢追月
          @super2
          呵呵。我不是翻譯滴……只是介紹了哈它的用法……我哪個(gè)翻字用錯(cuò)了。  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2008-09-12 10:36 |
          這個(gè)查詢太簡單了吧?要是只查某部分字段或復(fù)合查詢(如count(XX)、sun(XX))該怎么用?還能自動(dòng)匹配嗎?  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2008-09-12 13:40 | 殘夢追月
          @巫
          這個(gè)只是個(gè)例子嘛……你可以用別名啊……
          select Count(*) as n form table  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2009-05-27 14:01 | liyaxi
          多謝兄弟 ,可是我在spring 2.0是已經(jīng)發(fā)現(xiàn)了,  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2010-04-13 09:24 | dinstone
          @liyaxi
          你太牛逼了,人家V2.5才出現(xiàn),你就在2.0看見了??
          /*
          * @author Thomas Risberg
          * @author Juergen Hoeller
          * @since 2.5
          */
          public class BeanPropertyRowMapper implements RowMapper

            回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。 2010-05-16 10:00 | chrislee
          這東西應(yīng)該不是在所有情況下都能通用的!
          如果在多表鏈接的時(shí)候,兩個(gè)表的字段中都用id,或者name的列名。
          映射的時(shí)候肯定就會(huì)亂掉。
          最近寫.net的東西的時(shí)候,就想到這樣的問題。寫了個(gè)通用的,需要在每個(gè)類中加上輔助的信息,以防止多表鏈接的時(shí)候這樣列名沖突的情況  回復(fù)  更多評(píng)論
            
          # re: 發(fā)現(xiàn)了Spring2.5里的一個(gè)新東西, BeanPropertyRowMapper類。[未登錄] 2012-03-12 15:18 | rover
          如果有下劃線,也會(huì)自動(dòng)被轉(zhuǎn)化成camel命名法....  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 务川| 通海县| 历史| 闻喜县| 崇明县| 铁岭市| 景德镇市| 白山市| 罗山县| 九寨沟县| 乐亭县| 东乌珠穆沁旗| 临泽县| 宁南县| 稻城县| 荥阳市| 蕉岭县| 临邑县| 高阳县| 罗城| 峨眉山市| 乐清市| 桃园市| 天门市| 枣阳市| 河东区| 纳雍县| 从化市| 阜城县| 灵山县| 乌鲁木齐县| 尖扎县| 宁城县| 中牟县| 荣昌县| 清镇市| 裕民县| 图片| 磴口县| 白城市| 扎鲁特旗|