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

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

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

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Struts2+Spring2+Hibernate3 web應用示例(二)

    Posted on 2007-09-30 09:47 詩特林 閱讀(19008) 評論(4)  編輯  收藏 所屬分類: Struts
        Struts2+Spring2+Hibernate3 web應用示例(二)

  • Struts2+Spring2+Hibernate3 web應用示例------源代碼
  • Struts2+Spring2+Hibernate3 web應用示例(七)
  • Struts2+Spring2+Hibernate3 web應用示例(六)
  • Struts2+Spring2+Hibernate3 web應用示例(五)
  • Struts2+Spring2+Hibernate3 web應用示例(四)
  • Struts2+Spring2+Hibernate3 web應用示例(三)
  • Struts2+Spring2+Hibernate3 web應用示例(二)
  • Struts2+Spring2+Hibernate3 web應用示例(一)

  •  

    三、       建立數據持久化層

    1、編寫實體類Booksbooks.hbm.xml映射文件。

    package com.sterning.books.model;

    import java.util.Date;

    public class Books {
        
    //    Fields 
        private String bookId;//編號
        private String bookName;//書名
        private String bookAuthor;//作者
        private String bookPublish;//出版社
        private Date bookDate;//出版日期
        private String bookIsbn;//ISBN
        private String bookPage;//頁數
        private String bookPrice;//價格
        private String bookContent;//內容提要
        
        
    //    Constructors
        public Books(){}
        
        
    //    Property accessors

        
    public String getBookId() {
            
    return bookId;
        }


        
    public void setBookId(String bookId) {
            
    this.bookId = bookId;
        }


        
    public String getBookName() {
            
    return bookName;
        }


        
    public void setBookName(String bookName) {
            
    this.bookName = bookName;
        }


        
    public String getBookAuthor() {
            
    return bookAuthor;
        }


        
    public void setBookAuthor(String bookAuthor) {
            
    this.bookAuthor = bookAuthor;
        }


        
    public String getBookContent() {
            
    return bookContent;
        }


        
    public void setBookContent(String bookContent) {
            
    this.bookContent = bookContent;
        }


        
    public Date getBookDate() {
            
    return bookDate;
        }


        
    public void setBookDate(Date bookDate) {
            
    this.bookDate = bookDate;
        }


        
    public String getBookIsbn() {
            
    return bookIsbn;
        }


        
    public void setBookIsbn(String bookIsbn) {
            
    this.bookIsbn = bookIsbn;
        }


        
    public String getBookPage() {
            
    return bookPage;
        }


        
    public void setBookPage(String bookPage) {
            
    this.bookPage = bookPage;
        }


        
    public String getBookPrice() {
            
    return bookPrice;
        }


        
    public void setBookPrice(String bookPrice) {
            
    this.bookPrice = bookPrice;
        }


        
    public String getBookPublish() {
            
    return bookPublish;
        }


        
    public void setBookPublish(String bookPublish) {
            
    this.bookPublish = bookPublish;
        }

    }

      com.sterning.books.model.Books.java

           接下來要把實體類Books的屬性映射到books表,編寫下面的books.hbm.xml文件:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
    >

    <hibernate-mapping>
         
    <class name="com.sterning.books.model.Books" table="books" >
             
    <id name="bookId" type="string">
                
    <column name="book_id" length="5" />
                
    <generator class="assigned" />
            
    </id>
            
    <property name="bookName" type="string">
                
    <column name="book_name" length="100" />
            
    </property>
             
    <property name="bookAuthor" type="string">
                
    <column name="book_author" length="100" />
            
    </property>
            
    <property name="bookPublish" type="string">
                
    <column name="book_publish" length="100" />
            
    </property>
             
    <property name="bookDate" type="java.sql.Timestamp">
                
    <column name="book_date" length="7" />
            
    </property>
              
    <property name="bookIsbn" type="string">
                
    <column name="book_isbn" length="20" />
            
    </property>
            
    <property name="bookPage" type="string">
                
    <column name="book_page" length="11" />
            
    </property>
            
    <property name="bookPrice" type="string">
                
    <column name="book_price" length="4" />
            
    </property> 
             
    <property name="bookContent" type="string">
                
    <column name="book_content" length="100" />
            
    </property>
         
    </class>
    </hibernate-mapping>
            com.sterning.books.model.books.hbm.xml

    2hibernate.cfg.xml配置文件如下:(注意它的位置在scr/hibernate.cfg.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
    >
    <hibernate-configuration>
    <session-factory>
        
    <property name="show_sql">true</property>

        
    <mapping resource="com/sterning/books/model/books.hbm.xml"></mapping>
    </session-factory>
    </hibernate-configuration>
      Com.sterning.bean.hibernate.hibernate.cfg.xml

    四、       建立DAO 

    DAO訪問層負責封裝底層的數據訪問細節,不僅可以使概念清晰,而且可以提高開發效率。

    1、建立DAO的接口類:BooksDao

    package com.sterning.books.dao.iface;

    import java.util.List;

    import com.sterning.books.model.Books;

    public interface BooksDao {
        List getAll();
    //獲得所有記錄
        List getBooks(int pageSize, int startRow);//獲得所有記錄
        int getRows();//獲得總行數
        int getRows(String fieldname,String value);//獲得總行數
        List queryBooks(String fieldname,String value);//根據條件查詢
        List getBooks(String fieldname,String value,int pageSize, int startRow);//根據條件查詢
        Books getBook(String bookId);//根據ID獲得記錄
        String getMaxID();//獲得最大ID值
        void addBook(Books book);//添加記錄
        void updateBook(Books book);//修改記錄
        void deleteBook(Books book);//刪除記錄    
    }

      com.sterning.books.dao.iface.BooksDao.java

     

    2、實現此接口的類文件,BooksMapDao

    package com.sterning.books.dao.hibernate;

    import java.sql.SQLException;
    import java.util.Iterator;
    import java.util.List;

    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import com.sterning.books.dao.iface.BooksDao;
    import com.sterning.books.model.Books;
    import com.sterning.commons.PublicUtil;


    /**
     * 
    @author cwf
     *
     
    */

    public class BooksMapDao extends HibernateDaoSupport implements BooksDao {

        
    public BooksMapDao(){}

        
    /**
         * 函數說明:添加信息
         * 參數說明:對象 
         * 返回值:
         
    */

        
    public void addBook(Books book) {
            
    this.getHibernateTemplate().save(book);
        }


        
    /**
         * 函數說明:刪除信息
         * 參數說明: 對象
         * 返回值:
         
    */

        
    public void deleteBook(Books book) {
            
    this.getHibernateTemplate().delete(book);
        }


        
    /**
         * 函數說明:獲得所有的信息
         * 參數說明: 
         * 返回值:信息的集合
         
    */

        
    public List getAll() {
            String sql
    ="FROM Books ORDER BY bookName";
            
    return this.getHibernateTemplate().find(sql);
        }

        
        
    /**
         * 函數說明:獲得總行數
         * 參數說明: 
         * 返回值:總行數
         
    */

        
    public int getRows() {
            String sql
    ="FROM Books ORDER BY bookName";
            List list
    =this.getHibernateTemplate().find(sql);
            
    return list.size();
        }

        
        
    /**
         * 函數說明:獲得所有的信息
         * 參數說明: 
         * 返回值:信息的集合
         
    */

        
    public List getBooks(int pageSize, int startRow) throws HibernateException {
            
    final int pageSize1=pageSize;
            
    final int startRow1=startRow;
            
    return this.getHibernateTemplate().executeFind(new HibernateCallback(){

                
    public List doInHibernate(Session session) throws HibernateException, SQLException {
                    
    // TODO 自動生成方法存根
                    Query query=session.createQuery("FROM Books ORDER BY bookName");
                    query.setFirstResult(startRow1);
                    query.setMaxResults(pageSize1);
                    
    return query.list();
                }

            }
    );
        }


        
    /**
         * 函數說明:獲得一條的信息
         * 參數說明: ID
         * 返回值:對象
         
    */

        
    public Books getBook(String bookId) {
            
    return (Books)this.getHibernateTemplate().get(Books.class,bookId);
        }


        
    /**
         * 函數說明:獲得最大ID
         * 參數說明: 
         * 返回值:最大ID
         
    */

        
    public String getMaxID() {
            String date
    =PublicUtil.getStrNowDate();
            String sql
    ="SELECT MAX(bookId)+1 FROM Books  ";
            String noStr 
    = null;
            List ll 
    = (List) this.getHibernateTemplate().find(sql);
            Iterator itr 
    = ll.iterator();
            
    if (itr.hasNext()) {
                Object noint 
    = itr.next();
                
    if(noint == null){
                    noStr 
    = "1";                
                }
    else{
                    noStr 
    = noint.toString();
                }

            }

            
            
    if(noStr.length()==1){
                noStr
    ="000"+noStr;
            }
    else if(noStr.length()==2){
                noStr
    ="00"+noStr;
            }
    else if(noStr.length()==3){
                noStr
    ="0"+noStr;
            }
    else{
                noStr
    =noStr;
            }

            
    return noStr;
        }


        
    /**
         * 函數說明:修改信息
         * 參數說明: 對象
         * 返回值:
         
    */

        
    public void updateBook(Books pd) {
            
    this.getHibernateTemplate().update(pd);
        }


        
    /**
         * 函數說明:查詢信息
         * 參數說明: 集合
         * 返回值:
         
    */

        
    public List queryBooks(String fieldname,String value) {
            System.out.println(
    "value: "+value);
            String sql
    ="FROM Books where "+fieldname+" like '%"+value+"%'"+"ORDER BY bookName";
            
    return this.getHibernateTemplate().find(sql);
        }

        
        
    /**
         * 函數說明:獲得總行數
         * 參數說明: 
         * 返回值:總行數
         
    */

        
    public int getRows(String fieldname,String value) {
            String sql
    ="";
            
    if(fieldname==null||fieldname.equals("")||fieldname==null||fieldname.equals(""))
                sql
    ="FROM Books ORDER BY bookName";
            
    else    
                sql
    ="FROM Books where "+fieldname+" like '%"+value+"%'"+"ORDER BY bookName";
            List list
    =this.getHibernateTemplate().find(sql);
            
    return list.size();
        }

        
        
    /**
         * 函數說明:查詢信息
         * 參數說明: 集合
         * 返回值:
         
    */

        
    public List getBooks(String fieldname,String value,int pageSize, int startRow) {
            
    final int pageSize1=pageSize;
            
    final int startRow1=startRow;
            
    final String queryName=fieldname;
            
    final String queryValue=value;
            String sql
    ="";
            
            
    if(queryName==null||queryName.equals("")||queryValue==null||queryValue.equals(""))
                sql
    ="FROM Books ORDER BY bookName";
            
    else    
                sql
    ="FROM Books where "+fieldname+" like '%"+value+"%'"+"ORDER BY bookName";
            
            
    final String sql1=sql;
            
    return this.getHibernateTemplate().executeFind(new HibernateCallback(){

                
    public List doInHibernate(Session session) throws HibernateException, SQLException {
                    
    // TODO 自動生成方法存根
                    Query query=session.createQuery(sql1);
                    query.setFirstResult(startRow1);
                    query.setMaxResults(pageSize1);
                    
    return query.list();
                }

            }
    );
        }


    }

     com.sterning.books.dao.hibernate.BooksMapDao.java
    未完待續.下篇寫業務邏輯層
    。。。。。。

    評論

    # re: Struts2+Spring2+Hibernate3 web應用示例(二)  回復  更多評論   

    2008-03-17 22:26 by 瞬間愛情
    謝謝你了額...要咋樣才可以聯系得上你額?

    # re: Struts2+Spring2+Hibernate3 web應用示例(二)  回復  更多評論   

    2009-01-15 17:29 by monarch
    獲取總行數的效率太低了
    樓主能不能弄高效的方法
    如:select count(*) from (searchSql)
    但貌似在jpa規范中沒有容易實現的方法

    # re: Struts2+Spring2+Hibernate3 web應用示例(二)  回復  更多評論   

    2009-06-18 16:37 by way
    謝謝樓主啦。。讓我了解了了SSH的架構

    # re: Struts2+Spring2+Hibernate3 web應用示例(二)  回復  更多評論   

    2012-08-23 15:28 by 打算
    胡錦濤今天去文濤閣了
    主站蜘蛛池模板: 无码午夜成人1000部免费视频| 在线观看亚洲免费视频| 久久精品国产亚洲αv忘忧草 | 免费观看日本污污ww网站一区| 国产猛烈高潮尖叫视频免费| 亚洲av再在线观看| 亚洲成AV人片在线观看| 亚洲精品一卡2卡3卡三卡四卡| 亚洲午夜一区二区三区| 老司机精品视频免费| 男女一边摸一边做爽的免费视频| 日本免费人成视频在线观看| 久久精品免费一区二区喷潮| 亚洲男人第一无码aⅴ网站| 亚洲av丰满熟妇在线播放| 456亚洲人成在线播放网站| 高潮毛片无遮挡高清免费视频| av永久免费网站在线观看| 一二三四免费观看在线电影| 大胆亚洲人体视频| 久久青青草原亚洲av无码app| 激情亚洲一区国产精品| 一级毛片大全免费播放| 1000部免费啪啪十八未年禁止观看| 尤物永久免费AV无码网站| 亚洲免费人成在线视频观看| 亚洲综合伊人制服丝袜美腿| v片免费在线观看| 久久成人国产精品免费软件| 国产福利免费在线观看| 伊人久久综在合线亚洲2019| 精品亚洲av无码一区二区柚蜜| 国产成人久久AV免费| 国产精品免费小视频| 亚洲日本在线观看| 色婷婷亚洲一区二区三区| 人妻无码一区二区三区免费| 亚洲国产精品尤物yw在线| 亚洲成aⅴ人片在线影院八| 七次郎成人免费线路视频| 四虎永久在线观看免费网站网址|