<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)載時注明作者姓名(楊一)及出處(www.tkk7.com/yangyi)
    /////////////////////////////////////////
    我的訪問者

    常用鏈接

    留言簿(5)

    隨筆分類(55)

    隨筆檔案(55)

    相冊

    Java

    其他技術(shù)

    生活

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    自強不息


    用心 - 珍惜時間,勇于創(chuàng)造
    主站蜘蛛池模板: 亚洲AV无码国产剧情| 一边摸一边爽一边叫床免费视频| 成人免费在线视频| 直接进入免费看黄的网站| 国产亚洲精品看片在线观看| 一级毛片免费毛片一级毛片免费 | 亚洲精品无码av人在线观看| 中文字幕在线免费| 精品特级一级毛片免费观看| 久久久久久久久亚洲| 麻豆成人精品国产免费| 9i9精品国产免费久久| 亚洲人成网站看在线播放| 亚洲人成电影在线播放| 国产无人区码卡二卡三卡免费| 免费一级毛片在线播放视频免费观看永久 | 久久久久亚洲AV片无码| 国产成人免费a在线视频app| 亚洲精品免费观看| 男性gay黄免费网站| 亚洲视频在线免费播放| 亚洲高清免费视频| 一区二区无码免费视频网站| 日韩精品无码免费专区午夜| 亚洲区日韩精品中文字幕| 亚洲AV日韩精品久久久久久久 | 特级做A爰片毛片免费69| 国内永久免费crm系统z在线| 亚洲精品国产摄像头| 亚洲综合激情九月婷婷| 国产精品V亚洲精品V日韩精品| 国产精品成人免费视频网站京东 | 亚洲综合av一区二区三区| 亚洲AV无码久久| 亚洲视频在线一区二区| 天天干在线免费视频| 美女被免费喷白浆视频| 嫩草影院在线播放www免费观看| 免费人妻精品一区二区三区| 亚洲人成色777777老人头| 亚洲综合无码一区二区三区|