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

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

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

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    xdoclet 代碼生成

    Posted on 2007-12-24 17:54 G_G 閱讀(1490) 評論(0)  編輯  收藏 所屬分類: javaGeneral
    學習xdoclet 發現是很有用的。易于規范,使用方便;
    參考: http://blog.easyjf.com/html/blog/20061127/3290288676803397.htm
    官方完整API: Template Language (*.xdt)

    因為參考中:是還是比較復雜的例(數本人愚鈍^_^)特留一文:
    1>ant編輯文件
    <?xml?version="1.0"?encoding="UTF-8"?>
    <project?name="xdocletExample"?default="doall"?basedir=".">
    ????
    <property?name="basedir"?location="E:\ue_test\xdoclet"?/>
    ????
    <property?name="xdoclet.lib.dir"?location="D:\hbn\hibernate-3.2\xdoclet-1.2.3\lib"?/>

    ????
    <property?name="gen.src.dir"?location="${basedir}/target"?/>
    ????
    <property?name="src.dir"?location="${basedir}/src"?/>
    ????
    <property?name="template.dir"?location="${basedir}/template"?/>
    ????
    <property?name="customtag.dir"?location="${basedir}/bin"?/>

    ????
    <path?id="xdoclet.lib.path">
    ???????
    <fileset?dir="${xdoclet.lib.dir}"?includes="*.jar"?/>
    ????
    </path>

    ????
    <taskdef?name="xdoclet"?classname="xdoclet.DocletTask"?classpathref="xdoclet.lib.path"?/>???

    ????
    <target?name="init"?/>

    ????
    <target?name="daogener"?depends="init">
    ???????
    <xdoclet?destdir="${gen.src.dir}">
    ???????????
    <fileset?dir="${src.dir}"?includes="${cjava.file}"?/>
    ???????????
    <template?templateFile="${xdt.file}"?acceptInterfaces="false"?acceptAbstractClasses="false"?destinationfile="{0}DAO.java"?/>
    ???????
    </xdoclet>
    ????
    </target>

    ????
    <target?name="doall"?depends="daogener,daoimplgener"?/>

    </project>

    在運行上面文件時候動態輸入參數
    ?1.依照的 .java 文件( cjava.file );
    ?2.依照的 .xdt.file 文件( xdt.file );

    比如DOS中輸入:
    E:\ue_test\xdoclet>ant daogener
    -Dxdt.file=template\daointerface.xdt
    -Dcjava.file=test\TestXDoclet.java

    2.參考的java文件(簡單過頭了 呵呵)
    package?test;
    ??
    /**
    ??*?@hasRef
    ??
    */
    public?class?TestXDoclet{
    ????
    /**
    ?????*?@ref.model?name="sytp"
    ?????
    */
    ????
    private?PubSystype?sytp;

    ????
    private String gg;
    }

    3.xdt 模板
    ? 標簽解釋:
    ? <XDtClass:ifHasClassTag?tagName="hasRef">判斷 java文件中有 @hasRef
    ?
    <XDtField:forAllFields>? 1> 循環查找
    ?
    ? 2>判斷有@ref.model?name=。。
    ? <XDtField:ifHasFieldTag?tagName="ref.model"?paramName="name">
    ?
    ? 3>取值
    ??
    <XDtField:fieldTagValue?tagName="ref.model"?paramName="name"?/> ?

    package?com.hycs.bs.client.itf;

    import?java.util.List;

    //這是?packageName.className?這和好理解
    import?
    <XDtPackage:packageName?/>.<XDtClass:className?/>;

    public?interface?
    <XDtClass:className?/>DAO?{

    ????//添加
    ????boolean?add(
    <XDtClass:className?/>?instance);
    ????
    ????//邏輯添加
    ????
    <XDtClass:ifHasClassTag?tagName="hasRef">
    ????????boolean?add(
    <XDtClass:className?/>?instance,
    ????????????????
    <XDtField:forAllFields>
    ????????????????????
    <XDtField:ifHasFieldTag?tagName="ref.model"?paramName="name">?
    ????????????????????????String?
    <XDtField:fieldTagValue?tagName="ref.model"?paramName="name"?/>
    ????????????????????
    </XDtField:ifHasFieldTag>
    ????????????????
    </XDtField:forAllFields>);??
    ????
    </XDtClass:ifHasClassTag>

    ????//更新
    ????boolean?update(
    <XDtClass:className?/>?instance);


    ????//得到一個對象
    ????
    <XDtClass:className?/>?get(String?pkid);
    }

    運行DOS->
    E:\ue_test\xdoclet>ant daogener
    -Dxdt.file=template\daointerface.xdt
    -Dcjava.file=test\TestXDoclet.java

    得到的代碼:
    package?com.hycs.bs.client.itf;

    import?java.util.List;

    //這是?packageName.className?這和好理解
    import?test.TestXDoclet;

    public?interface?TestXDocletDAO?{

    ????
    //添加
    ????boolean?add(TestXDoclet?instance);
    ????
    //邏輯添加
    ????????boolean?add(TestXDoclet?instance,String?sytp);?
    ????
    //更新
    ????boolean?update(TestXDoclet?instance);

    ????
    //得到一個對象
    ????TestXDoclet?get(String?pkid);
    }






    主站蜘蛛池模板: 亚洲一级毛片免观看| 国产成人综合亚洲亚洲国产第一页 | 亚洲一卡2卡三卡4卡有限公司| 一个人看的免费视频www在线高清动漫 | 久久精品国产亚洲AV麻豆~| 中文字幕免费观看视频| 久久综合亚洲色HEZYO国产| 中文字幕成人免费高清在线| 亚洲综合伊人久久大杳蕉| 两个人看的www免费高清| 亚洲AV无码成人精品区在线观看| 久久免费精品视频| 亚洲理论片在线中文字幕| 波多野结衣免费在线| 亚洲一区二区三区成人网站| 国产精品免费一级在线观看| 一区二区视频免费观看| 亚洲精品无码永久在线观看你懂的| 人妻免费一区二区三区最新| 亚洲综合一区二区精品导航| 欧洲黑大粗无码免费| 国产一区二区三区亚洲综合| 综合亚洲伊人午夜网| 91福利免费体验区观看区| 亚洲自国产拍揄拍| 免费一级毛片女人图片| 999zyz**站免费毛片| 精品亚洲成a人片在线观看少妇| 两个人的视频高清在线观看免费| 美女视频黄a视频全免费网站色 | 久久亚洲精品人成综合网 | 四虎影视永久免费观看网址| 中文在线免费观看| 亚洲第一香蕉视频| 亚洲va中文字幕无码| 免费人成毛片动漫在线播放| 亚洲精品无码久久久久YW| 亚洲国产精品成人久久| 三年片在线观看免费大全| 亚洲免费视频一区二区三区| 亚洲人和日本人jizz|