<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂奔 lion

    自強不息

    如何應用Hibernate在運行期獲取屬性的值

    Hibernate根據(jù)配置文件從數(shù)據(jù)庫中把關(guān)系型的數(shù)據(jù)以對象的形式挖掘出來,那么假如我有一個Table控件,可以放置展現(xiàn)任何的表結(jié)構(gòu),如何在運行期做到把數(shù)據(jù)載入呢?Hibernate已經(jīng)把數(shù)據(jù)讀成對象的形式,就注定沒有JDBC一般靈活,為次可以通過編寫如下的兩個工具方法來實現(xiàn):
    import java.lang.reflect.Method;

    /**
     * 獲取指定bean的指定字段的值
     
    */
    public class BeanUtils {
        
    private BeanUtils(){}
        
        
    /**
         * 根據(jù)beanName和列名字獲取hql語句
         * 
    @param beanName
         * 
    @param columnNames
         * 
    @return 以list形式返回數(shù)據(jù)的hql語句
         
    */
        
    public static String getHql(String beanName, String[] columnNames){
            StringBuffer sb 
    = new StringBuffer();
            sb.append(
    "select new list(");
            StringBuffer columnString 
    = new StringBuffer();
            
    for(int i=0,len=columnNames.length;i<len;i++){
                columnString.append(
    ",");
                columnString.append(columnNames[i]);
            }
            sb.append(columnString.substring(
    1));
            sb.append(
    ") from ");
            
    if(Character.isUpperCase(beanName.charAt(0)))
                sb.append(beanName);
            
    else
                sb.append(upperFirstChar(beanName));
            
    return sb.toString();
        }
        
    /**
         * 
    @param bean 獲取到的域?qū)ο?br />      * @param fieldName 欲獲取值的字段名
         * 
    @return 字段在當前bean封裝下的值
         
    */
        
    public static Object getFieldByName(Object bean, String fieldName){
            
    try {
                Method m 
    = bean.getClass().getMethod("get"+upperFirstChar(fieldName), null);
                
    return m.invoke(bean, null);
            } 
    catch (Exception e) {
                e.printStackTrace();
            }
            
    return null;
        }
        
    private static String upperFirstChar(String orig){
            
    return Character.toUpperCase(orig.charAt(0)) + orig.substring(1);
        }
    }
    按照已經(jīng)處理后,我們就可以既應用Hibernate對象訪問的優(yōu)點,又不損失字符串的靈活性,代碼中應用了Hibernate的select特性及java的反射機制


     @2008 楊一. 版權(quán)所有. 保留所有權(quán)利

    posted on 2006-08-04 13:39 楊一 閱讀(512) 評論(0)  編輯  收藏 所屬分類: Java EE

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    公告

    本人在blogjava上發(fā)表的文章及隨筆除特別聲明外均為原創(chuàng)或翻譯,作品受知識產(chǎn)權(quán)法保護并被授權(quán)遵從 知識分享協(xié)議:署名-非商業(yè)性使用-相同方式共享 歡迎轉(zhuǎn)載,請在轉(zhuǎn)載時注明作者姓名(楊一)及出處(m.tkk7.com/yangyi)
    /////////////////////////////////////////
    我的訪問者

    常用鏈接

    留言簿(5)

    隨筆分類(55)

    隨筆檔案(55)

    相冊

    Java

    其他技術(shù)

    生活

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    自強不息


    用心 - 珍惜時間,勇于創(chuàng)造
    主站蜘蛛池模板: 亚洲AV天天做在线观看| 亚洲精品无码久久久| 亚洲网站在线播放| 久久这里只精品热免费99| 亚洲成AV人片一区二区密柚| 国产免费久久久久久无码| 亚洲人成网77777色在线播放| 中文字幕永久免费| 国产∨亚洲V天堂无码久久久| 特级无码毛片免费视频尤物| 亚洲国产综合专区在线电影| 日韩人妻无码精品久久免费一| 亚洲一区二区三区电影| 青娱分类视频精品免费2| 亚洲影视自拍揄拍愉拍| 狠狠久久永久免费观看| 无码精品人妻一区二区三区免费| 亚洲第一区精品日韩在线播放| jizz免费在线观看| 久久亚洲日韩精品一区二区三区| 99久久久国产精品免费无卡顿| 亚洲日韩AV一区二区三区四区| 国产免费变态视频网址网站| 国产久爱免费精品视频| 亚洲视频中文字幕| 最近免费中文字幕大全| 乱人伦中文视频在线观看免费| 亚洲国产精品无码久久久蜜芽 | 亚洲国产日韩在线观频| 男女一边桶一边摸一边脱视频免费| 亚洲精品无码Av人在线观看国产| 一区二区三区观看免费中文视频在线播放 | 真正全免费视频a毛片| 久久久久久亚洲精品| 98精品全国免费观看视频| 亚洲高清一区二区三区| 亚洲精品tv久久久久久久久久| 免费无码VA一区二区三区| 色欲色欲天天天www亚洲伊| 亚洲va国产va天堂va久久| 啦啦啦www免费视频|