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

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

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

    lizongbo 的 編程學習

    http://618119.com

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks

    關于代碼生成器反復生成代碼的設計。

    我以前的做法是先生成盡可能詳細的代碼。
    (生成findby方法基本把每個字段都列在了查詢條件里,包括一些基本用不到的)
    然后只需要復制其中的代碼片斷來完成需要新加的方法。
    前幾天在表中增加字段之后,手工寫了不少代碼 :(((

    charon@xxx 的回復的提示,結合myeclipse生成 pojo的思路,
    對我的代碼生成器進行改進,作以下處理。

    以dao為例(其它logic等均作類似處理),定義兩個接口。和對應兩個實現。

    寫成四個模板文件。

    比如IpojoBaseDAO.java,pojoBaseDAOImpl.java abstract的,但是實現IpojoBaseDAO里的方法。
    這個是可以反復生成的。

    再定義兩個繼承類模板。
    IpojoDAO.java 繼承自IpojoBaseDAO
    pojoDAOImpl.java 繼承自 pojoBaseDAOImpl。實現IpojoDAO。
    這兩個文件只需要生成一次,以后自己增加的代碼都在這里。
    在第一次生成好代碼之后,把這兩文件名后綴改為.bak.這樣再運行代碼生成器的時候就不會再生成了。


    不廢話了,看生成的效果。

    接口:
    IBlogPostBaseDAO.java
    ////本文件可以反復生成。
    public interface IBlogPostBaseDAO{

    ??? void addBlogPost(BlogPost blogPost);
    ??????? List findBlogPostby(
    ??????????? java.lang.String blogNo,???
    ??????????? java.util.Date addtime_begin,
    ??????????? java.util.Date addtime_end,
    ??????????? java.lang.String blogUserName,
    ??????????? java.lang.String blogTitle,
    ??????????? java.lang.String blogContent,
    ??????????? java.lang.String blogSummary,
    ??????????? Pagination page);
    }

    IBlogPostDAO.java

    //本文件只需要生成一次
    public interface IBlogPostDAO extends? IBlogPostBaseDAO{

    ??? void testBlogPost(BlogPost blogPost); //在這里增加手工補充的具體接口方法
    }

    BlogPostHibernateBaseDAO.java
    //本文件可以反復生成。
    public class BlogPostHibernateBaseDAO extends HibernateBaseDAOSupport implements IBlogPostDAO {
    ??????? private static final transient Logger log = Logger.getLogger(BlogPostHibernateBaseDAO.class);
    ??????? public BlogPostHibernateBaseDAO() {
    ??????? }
    ???
    ??? public void addBlogPost(BlogPost blogPost){
    ????? this.getHibernateTemplate().save(blogPost);
    ??? }
    //多條件分頁查詢
    ??? public List findBlogPostby(
    ??????? final java.lang.String blogNo,???
    ??????? final java.util.Date addtime_begin,
    ??????? final java.util.Date addtime_end,
    ??????? final java.lang.String blogUserName,
    ??????? final java.lang.String blogTitle,
    ??????? final java.lang.String blogContent,
    ??????? final java.lang.String blogSummary,
    ??????? final Pagination page){
    ??? return (List)this.getHibernateTemplate().execute(
    ??????????????? new HibernateCallback() {
    ??????????? public Object doInHibernate(Session session) throws SQLException,
    ??????????????????? HibernateException {
    ??????????????? Criteria ca = session.createCriteria(BlogPost.class);
    ??????????????? if (blogNo != null && blogNo.length() > 0) {
    ??????????????????????? ca.add(Expression.like("blogNo", blogNo, MatchMode.ANYWHERE));
    ??????????????????? }
    ??????????????? if (addtime_begin != null) {
    ??????????????????????? ca.add(Expression.ge("addtime", addtime_begin));
    ??????????????? }
    ??????????????? if (addtime_end != null) {
    ??????????????????????? ca.add(Expression.le("addtime", addtime_end));
    ??????????????? }
    ??????????????? if (blogUserName != null && blogUserName.length() > 0) {
    ??????????????????????? ca.add(Expression.like("blogUserName", blogUserName, MatchMode.ANYWHERE));
    ??????????????? }
    ??????????????? if (blogTitle != null && blogTitle.length() > 0) {
    ??????????????????????? ca.add(Expression.like("blogTitle", blogTitle, MatchMode.ANYWHERE));
    ??????????????? }
    ??????????????? if (blogContent != null && blogContent.length() > 0) {
    ??????????????????????? ca.add(Expression.like("blogContent", blogContent, MatchMode.ANYWHERE));
    ??????????????? }
    ??????????????? if (blogSummary != null && blogSummary.length() > 0) {
    ??????????????????????? ca.add(Expression.like("blogSummary", blogSummary, MatchMode.ANYWHERE));
    ??????????????? }
    ???????? if (page != null) {
    ??????????????? page.setTotalNum(((Integer) ca.setProjection(Projections.
    ??????????????????????? rowCount()).uniqueResult()).intValue());
    ???????? }
    ??????????????? ca.setProjection(null);
    ??????????????????? ca.addOrder(Order.desc("addtime"));//

    ??????? if (page != null) {
    ??????????????? ca.setMaxResults(page.getPageSize());
    ??????????????? ca.setFirstResult(page.getStartIndex());
    ??????? }
    ??????????????? return ca.list();
    ??????????? }
    ??????? }, true);
    ??? }
    ??? }
    BlogPostHibernateDAO.java
    //本文件只需要生成一次
    ??? public class BlogPostHibernateDAO extends BlogPostHibernateBaseDAO implements IBlogPostDAO{
    ??????? private static final transient Logger log = Logger.getLogger(BlogPostHibernateDAO.class);
    ??????? public BlogPostHibernateDAO() {
    ??????? }
    ???
    ??? public void testBlogPost(BlogPost blogPost){
    ????? //手工的代碼了
    ??? }

    }

    以上代碼,除了斜線后的注釋,都是代碼生成器生成的,受篇幅限制,作了大量的刪減


    ?

    posted on 2006-04-26 14:08 lizongbo 的編程學習 閱讀(1463) 評論(0)  編輯  收藏 所屬分類: java 積累
    主站蜘蛛池模板: 亚洲国产人成在线观看| 日韩在线免费看网站| 亚洲精品无码久久久影院相关影片| 国产亚洲视频在线观看网址| 国产青草视频免费观看97| 亚洲女女女同性video| 韩国日本好看电影免费看| 激情无码亚洲一区二区三区 | 最近中文字幕无吗免费高清| 亚洲国产成人超福利久久精品| 久久成人国产精品免费软件| 亚洲精品在线播放| 最近免费中文字幕大全视频| 亚洲GV天堂GV无码男同| 亚洲阿v天堂在线2017免费| eeuss影院www天堂免费| 亚洲av午夜福利精品一区| 在线观看永久免费| 亚洲人成色99999在线观看| 全黄性性激高免费视频| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲AV永久无码精品成人| 皇色在线视频免费网站| 久久综合亚洲色hezyo| 国产综合亚洲专区在线| 一级毛片免费观看| 亚洲中文无码mv| 超清首页国产亚洲丝袜| 97在线视频免费| 国产精品亚洲五月天高清| 中文字幕精品亚洲无线码一区| 99久9在线|免费| 亚洲av成人中文无码专区| 国产亚洲精品资源在线26u| 免费下载成人电影| 午夜不卡AV免费| 亚洲人成人77777网站不卡| 亚洲色偷偷综合亚洲AV伊人| 久久久久久久久久国产精品免费| 亚洲中文字幕乱码一区| 亚洲人成精品久久久久|