<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 積累
    主站蜘蛛池模板: 伊人久久综在合线亚洲2019| 亚洲日韩在线观看免费视频| 亚洲小视频在线播放| 免费无码中文字幕A级毛片| 一区二区三区在线免费| 一本久久综合亚洲鲁鲁五月天| 狠狠色伊人亚洲综合成人| www.xxxx.com日本免费| 亚洲无人区午夜福利码高清完整版 | 亚洲乱码国产一区三区| 中文在线免费观看| 日本红怡院亚洲红怡院最新| 国产成人免费AV在线播放| 337p欧洲亚洲大胆艺术| 国产成人福利免费视频| 亚洲人av高清无码| 亚洲第一网站男人都懂| 香蕉免费一级视频在线观看| 亚洲狠狠久久综合一区77777| 麻豆视频免费观看| 色九月亚洲综合网| 爱情岛论坛网亚洲品质自拍| 国产成人免费视频| 国产精品亚洲自在线播放页码| 日日摸夜夜添夜夜免费视频| 黄页网站在线观看免费高清| 亚洲精品国产日韩| 亚洲A∨午夜成人片精品网站| 国产视频精品免费视频| 亚洲一区中文字幕久久| 精品剧情v国产在免费线观看| 日日狠狠久久偷偷色综合免费| 亚洲av午夜福利精品一区| 两性刺激生活片免费视频| 亚洲avav天堂av在线网毛片| 永久亚洲成a人片777777| 免费v片在线观看视频网站| 黄色免费网站在线看| 成人伊人亚洲人综合网站222| 一个人免费观看视频在线中文| 18亚洲男同志videos网站|