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

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

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

    Java Architect

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    2008年6月19日 #

    關于SAAS平臺的一點想法

    最近研究了幾個ERP,CRM的產品 象Sales force, Compeire, sugarCRM,覺得SAAS平臺無非需要提供以下可以高度定制的功能。

    1.  GUI
      • CSS
      • resources
      • menu/link
      • message i18n
      • form
      • GUI EventListener
    2. Business Object
      • business logic or call back
      • email
      • report charts
      • job scheduler
      • business rule
      • work flow
      • access control
      • asynchronous request.
    3. Database
     
    我覺得這里面最難的應屬GUI的高度可定制化。本人正在想用GWT來做一個基于上面想法的SASS平臺,屆時軟件可真正實現快速按需打造。歡迎JAVA界的同仁多提寶貴建議。






    posted @ 2008-06-19 05:54 zrq 閱讀(1060) | 評論 (0)編輯 收藏

    2007年9月8日 #

    sql statement

      Select obj
     
    from CommDeductionType obj
      
    where 1=1
        #
    if($obj)
         
    and obj.deductionTypeCode = #{obj.deductionTypeCode}
        #
    end

    posted @ 2007-09-08 02:50 zrq 閱讀(147) | 評論 (0)編輯 收藏

    2007年7月27日 #

    Open laszlo


    Datapointers are not bound to views like datapaths are, but they do have a place in the view hierarchy—that is, they "know about" parents and children.
     1 
     2 <datapointer xpath="myData:/" ondata="processData()">
     3     <method name="processData">
     4       this.selectChild(2); 
     5       do {
     6         if (this.xpathQuery( '@show' ) == 'south park') {
     7             Debug.write(this.xpathQuery('firstName/text()'));
     8         }
     9       } while (this.selectNext()); 
    10     </method>
    11   </datapointer>
    12 
    13 

    Create data set at runtime

    LzDataset: var dset = new LzDataset(null, {name: 'mydset'})

    $path{} limitations
    A limitation of the $path{} constraint is that the expression it contains is evaluated only at the initialization time, that is, an expression such as $path{'mynode[' + i + ']/@attr'} will behave like a $once{} constraint.Custome

    Customize the data binding
    1 <view name="swatch" width="200" height="30" 
    2   datapath="colors:/value[1]/text()">
    3     <method name="applyData" args="v">
    4       setBGColor(eval(v))
    5       display.setText(v)
    6     </method>
    7   </view>

    $path{}


    datapath.setdatapointer

    <canvas height="150">
    <dataset name="phonebook" src="resources/phonebook.xml"/>
    <simplelayout axis="x" spacing="20"/>

    <view name="contacts" height="150" width="100">
    <view bgcolor="0xe0e0e0" datapath="phonebook:/contacts/contact"
    onmouseover="setBGColor(0xc0c0c0)" onmouseout="setBGColor(0xe0e0e0)"
    onclick="details.datapath.setPointer(this.datapath.p)">
    <simplelayout axis="x" spacing="5"/>
    <text datapath="@firstName" resize="true"/>
    <text datapath="@lastName" resize="true"/>
    </view>
    <simplelayout spacing="5"/>
    </view>

    <view id="details" width="150" height="150" bgcolor="0xe0e0e0" fgcolor="blue">
    <datapath/>
    <text datapath="@firstName"/>
    <text datapath="@lastName"/>
    <text datapath="@phone"/>
    <text datapath="@email"/>
    <simplelayout spacing="5"/>
    </view>
    </canvas>



    posted @ 2007-07-27 03:18 zrq 閱讀(189) | 評論 (0)編輯 收藏

    2006年8月13日 #

    DAO終結者

    動態組裝SQL是實際應用中的一個常見問題,我發現在很多論壇中的解決方案都不干淨,下面是我在很多項目中使用的方案,簡潔有效.

    基本概念如下:

    1. 使用模板技術,如Velocity,FreeMarker;
    2. 在SQL中不要使用?,使用自己的place holder ,such as #{variableName};

    象下面的SQL語句
    select firstName
    ????? ,lastName
    from users u
    where? u.userId= #{userId}

    #if($companyId)
    ? and u.companyId=#{companyId}
    #end

    處理過程如下:

    1.將所有變量放進一個MAP中;
    2.用VELOCITY進行MERGE,將得到以下的SQL,假定companyId 不為空;
    ? select firstName
    ????? ,lastName
    from users u
    where? u.userId= #{userId}
    ? and u.companyId=#{companyId}
    3.再將上面的SQL進一步處理,根據SQL語句中的placeHolder順序和MAP中的變量,生成一個變量的LIST,同時將變量的placeHolder轉換成?;
    4.將變量LIST的數值依次注入到preparedStatement中;

    ? Tips: 這里還可生成一個完全可執行的 SQL 語句輸出到 LOG , 以便進行除錯;
    5.執行SQL, reflection技術將ResultSet轉換成voList;

    ?

    將上面的過程封裝成一個 Class , 只需將 sqlName,parameterMap,voClass 傳入便可返回一個 voList 或數組 . 此舉將大大減化 DAO 的代碼 , 根據我的經驗 , 代碼最起碼減少 70%, 更為重要的是查詢非常容易維護 , 極大地減少了出錯的概率 ,SQL 語句清晰易懂 , 不再是醜陋的 criteria, 也不再是將一個個的分散的 SQL 片斷 , 我們的程序員將會有更多的時間來寫 SQL, 而不是做其它讓人厭煩的工作 , 排錯也變得異常簡單 , 唯一可能出錯的地方只能在 SQL , 只要將 LOG 輸出的完整可執行 SQL 放在 database client 中執行一下 , 問題在哪兒 , 一目了然 .

    我相信此方法 比起 iBatis, Spring jdbcTemplate,Hibernate Criteria 要容易使用得多 . 其實 Hibernate HQL, 也可以用此方法來動態生成 HQL.
    ?

    posted @ 2006-08-13 09:35 zrq 閱讀(254) | 評論 (0)編輯 收藏

    僅列出標題  
    主站蜘蛛池模板: 成人爱做日本视频免费| 成人毛片18女人毛片免费| 亚洲人成人无码网www国产| 国产精品亚洲二区在线| 国产三级免费观看| 青娱乐在线视频免费观看| 又粗又大又长又爽免费视频| 亚洲AⅤ男人的天堂在线观看| 免费一级毛片正在播放| 精品女同一区二区三区免费播放| 免费在线观看黄网| 丁香六月婷婷精品免费观看| 国产亚洲美日韩AV中文字幕无码成人 | 精品国产一区二区三区免费看| 久久久久久av无码免费看大片| 亚洲欧洲精品成人久久曰影片| 本免费AV无码专区一区| 亚洲日本中文字幕| 好男人www免费高清视频在线| 亚洲av永久中文无码精品| 亚洲精品高清一二区久久| 污视频在线免费观看| 亚洲人成电影在线观看网| 午夜色a大片在线观看免费| 色婷婷精品免费视频| 亚洲国产成人片在线观看无码| 亚洲精品在线免费观看| 国产午夜成人免费看片无遮挡| 亚洲av无码一区二区乱子伦as| 亚洲免费在线观看视频| 亚洲欧洲无码一区二区三区| 色久悠悠婷婷综合在线亚洲| 在线a免费观看最新网站| 精品久久亚洲一级α| 亚洲AV无码专区电影在线观看| 一二三四影视在线看片免费 | 美女尿口扒开图片免费 | 亚洲国产精品va在线播放| 国产成人yy免费视频| 91亚洲va在线天线va天堂va国产 | 中文字幕中韩乱码亚洲大片|