欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HIbernate+struts2分页案例

程序员文章站 2022-08-05 10:55:31
[html]  
package www.csdn.pr...
[html]  

<pre name="code" class="html">package www.csdn.project.util;  

  

import org.hibernate.Session;  

  

  

/**  

 * Data access interface for domain model  

 * @author MyEclipse Persistence Tools  

 */  

public interface IBaseHibernateDAO {  

    public Session getSession();  

}</pre><br>  

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="myeclipse.connection.profile">localhost</property><property  

 name="connection.url">jdbc:mysql://localhost:3306/bookstore</property><property name="connection.username">root</property><property name="connection.password">root</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property  

 name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><mapping resource="www/csdn/project/domain/Admin.hbm.xml" /></session-factory></hibernate-configuration>  

<pre></pre>  

<p><br>  

</p>  

<p><br>  

</p>  

<p></p>  

<pre name="code" class="java">package www.csdn.project.dao;  

  

import www.csdn.project.domain.Admin;  

  

public interface AdminDAO extends BaseDAO<Admin, Integer> {  

  

}</pre><br>  

<pre name="code" class="java">package www.csdn.project.dao;  

  

import java.util.ArrayList;  

import java.util.List;  

  

import org.hibernate.Query;  

  

import www.csdn.project.domain.Admin;  

import www.csdn.project.util.BaseHibernateDAO;  

import www.csdn.project.util.HiberSessionFactory;  

  

public class AdminDAOImpl extends BaseHibernateDAO implements AdminDAO {  

  

    public Integer getCountRecord() {  

        int i = 0;  

        try {  

            Query query = this.getSession().createQuery(  

                    "select count(admin) from Admin admin");  

            /*  

             * Long l = (Long) query.uniqueResult(); int i =  

             * Integer.parseInt(l.toString());  

             */  

  

            i = Integer.parseInt(query.uniqueResult().toString());  

  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

        return i;  

    }  

      

      

  

  

  

  

    public List<Admin> getNowPageInfo(Integer nowpage) {  

  

        List<Admin> entities = new ArrayList<Admin>();  

        try {  

  

            entities = this.getSession().createQuery("from Admin")  

                    .setFirstResult((nowpage - 1) * PAGESIZE).setMaxResults(  

                            PAGESIZE).list();  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

  

        return entities;  

    }  

  

      

    /*public Integer getCountRecord(Class className){  

        int i=0;  

          

        try {  

             i = this.getSession().createCriteria(className).list().size();  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

          

        return 0;  

    }*/  

      

    public Integer getCountRecord(Class<Admin> className) {  

        int i = 0;  

        try {  

            Query query = this.getSession().createQuery(  

                    "select count(c) from "+className.getName()+" c");  

            /*  

             * Long l = (Long) query.uniqueResult(); int i =  

             * Integer.parseInt(l.toString());  

             */  

  

            i = Integer.parseInt(query.uniqueResult().toString());  

  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

        return i;  

    }  

      

      

    public List<Admin> getNowPageInfo(Integer nowpage, Class<Admin> className) {  

  

        List<Admin> entities = new ArrayList<Admin>();  

        try {  

  

            entities = this.getSession().createCriteria(className).setFirstResult(  

                    (nowpage - 1) * PAGESIZE).setMaxResults(PAGESIZE).list();  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

  

        return entities;  

    }  

  

}  

</pre><br>  

<pre name="code" class="java">package www.csdn.project.dao;  

  

import java.util.List;  

  

public interface BaseDAO<T, PK> {  

  

    // 每页显示的记录数  

    public static final Integer PAGESIZE = 2;  

  

    /**  

     * 查询总记录数  

     *   

     * @return  

     */  

    public Integer getCountRecord(Class<T> className);  

  

    /**  

     * 查询当前页信息  

     *   

     * @param nowpage  

     * @param entity  

     * @return  

     */  

    public List<T> getNowPageInfo(Integer nowpage,Class<T> className);  

}  

</pre><br>  

<pre name="code" class="java">package www.csdn.project.dao;  

  

import www.csdn.project.domain.Admin;  

  

public class Test {  

  

    public static void main(String[] args) {  

        Admin entity = new Admin();  

        System.out.println(entity.getClass());  

    }  

}  

</pre><br>  

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>  

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  

"https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

<!--  

    Mapping file autogenerated by MyEclipse Persistence Tools 

-->  

<hibernate-mapping>  

    <class name="www.csdn.project.domain.Admin" table="admin" catalog="bookstore">  

        <id name="adminId" type="java.lang.Integer">  

            <column name="adminId" />  

            <generator class="identity" />  

        </id>  

        <property name="adminName" type="java.lang.String">  

            <column name="adminName" length="20" not-null="true" unique="true" />  

        </property>  

        <property name="adminPassword" type="java.lang.String">  

            <column name="adminPassword" length="10" not-null="true" />  

        </property>  

        <property name="adminEmail" type="java.lang.String">  

            <column name="adminEmail" length="30" />  

        </property>  

    </class>  

</hibernate-mapping>  

</pre><br>  

<pre name="code" class="java">package www.csdn.project.domain;  

  

/**  

 * Admin entity. @author MyEclipse Persistence Tools  

 */  

  

public class Admin implements java.io.Serializable {  

  

    // Fields  

  

    private Integer adminId;  

    private String adminName;  

    private String adminPassword;  

    private String adminEmail;  

  

    // Constructors  

  

    /** default constructor */  

    public Admin() {  

    }  

  

    /** minimal constructor */  

    public Admin(String adminName, String adminPassword) {  

        this.adminName = adminName;  

        this.adminPassword = adminPassword;  

    }  

  

    /** full constructor */  

    public Admin(String adminName, String adminPassword, String adminEmail) {  

        this.adminName = adminName;  

        this.adminPassword = adminPassword;  

        this.adminEmail = adminEmail;  

    }  

  

    // Property accessors  

  

    public Integer getAdminId() {  

        return this.adminId;  

    }  

  

    public void setAdminId(Integer adminId) {  

        this.adminId = adminId;  

    }  

  

    public String getAdminName() {  

        return this.adminName;  

    }  

  

    public void setAdminName(String adminName) {  

        this.adminName = adminName;  

    }  

  

    public String getAdminPassword() {  

        return this.adminPassword;  

    }  

  

    public void setAdminPassword(String adminPassword) {  

        this.adminPassword = adminPassword;  

    }  

  

    public String getAdminEmail() {  

        return this.adminEmail;  

    }  

  

    public void setAdminEmail(String adminEmail) {  

        this.adminEmail = adminEmail;  

    }  

  

    @Override  

    public String toString() {  

        return "Admin [adminEmail=" + adminEmail + ", adminId=" + adminId  

                + ", adminName=" + adminName + ", adminPassword="  

                + adminPassword + "]";  

    }  

  

      

}</pre><br>  

<pre name="code" class="java">package www.csdn.project.service;  

  

import java.util.List;  

  

public interface BaseService<T,PK> {  

  

    /**  

     * 查询所有实体对象  

     *   

     * @param entityClass  

     * @return  

     */  

    public List<T> getAllObjects(Class<T> entityClass);  

      

    /**  

     * 根据id查询实体对象  

     * @param entityClass  

     * @param id  

     * @return  

     */  

    public T getObjectById(Class<T> entityClass,PK id);  

      

      

    /**  

     * 根据id查询实体对象  

     * @param entityClass  

     * @param id  

     * @return  

     */  

    public T loadObjectById(Class<T> entityClass, PK id);  

      

    /**  

     * 保存实体对象  

     * @param entity  

     */  

    public void saveObject(T entity);  

      

    /**  

     * 删除实体操作  

     * @param entity  

     */  

    public void deleteObject(T entity);  

      

    /**  

     * 根据id删除实体对象  

     * @param id  

     */  

    public void deleteObjectById(PK id);  

      

    /**  

     * 更新实体操作  

     *   

     * @param entity  

     */  

    public void updateObject(T entity);  

}  

</pre><br>  

测试类  

<p></p>  

<p></p>  

<pre name="code" class="java">package www.csdn.project.test;  

  

import java.util.List;  

  

import org.junit.Test;  

  

import www.csdn.project.dao.AdminDAO;  

import www.csdn.project.dao.AdminDAOImpl;  

import www.csdn.project.domain.Admin;  

import www.csdn.project.util.Pagination;  

  

  

public class AdminTest {  

  

    @Test  

    public void test(){  

        //查询Admin User Good  

        Pagination<Admin> pagination = new Pagination<Admin>(Admin.class,1);  

          

        System.out.println(pagination.getCountRecond());  

        System.out.println(pagination.getCountPage());  

        System.out.println(pagination.getNowPage());  

          

        List<Admin> entities = pagination.getEntities();  

        for(Admin entity:entities){  

            System.out.println(entity.toString());  

        }  

    }  

}  

</pre><br>  

<br>  

<pre name="code" class="java">package www.csdn.project.util;  

  

import org.hibernate.Session;  

  

  

/**  

 * Data access object (DAO) for domain model  

 * @author MyEclipse Persistence Tools  

 */  

public class BaseHibernateDAO implements IBaseHibernateDAO {  

      

    public Session getSession() {  

        return HiberSessionFactory.getSession();  

    }  

      

}</pre><pre name="code" class="java">package www.csdn.project.util;  

  

import org.hibernate.HibernateException;  

import org.hibernate.Session;  

import org.hibernate.cfg.Configuration;  

  

/**  

 * Configures and provides access to Hibernate sessions, tied to the  

 * current thread of execution.  Follows the Thread Local Session  

 * pattern, see {@link https://hibernate.org/42.html }.  

 */  

public class HiberSessionFactory {  

  

    /**   

     * Location of hibernate.cfg.xml file.  

     * Location should be on the classpath as Hibernate uses    

     * #resourceAsStream style lookup for its configuration file.   

     * The default classpath location of the hibernate config file is   

     * in the default package. Use #setConfigFile() to update   

     * the location of the configuration file for the current session.     

     */  

    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";  

    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();  

    private  static Configuration configuration = new Configuration();      

    private static org.hibernate.SessionFactory sessionFactory;  

    private static String configFile = CONFIG_FILE_LOCATION;  

  

    static {  

        try {  

            configuration.configure(configFile);  

            sessionFactory = configuration.buildSessionFactory();  

        } catch (Exception e) {  

            System.err  

                    .println("%%%% Error Creating SessionFactory %%%%");  

            e.printStackTrace();  

        }  

    }  

    private HiberSessionFactory() {  

    }  

      

    /**  

     * Returns the ThreadLocal Session instance.  Lazy initialize  

     * the <code>SessionFactory</code> if needed.  

     *  

     *  @return Session  

     *  @throws HibernateException  

     */  

    public static Session getSession() throws HibernateException {  

        Session session = (Session) threadLocal.get();  

  

        if (session == null || !session.isOpen()) {  

            if (sessionFactory == null) {  

                rebuildSessionFactory();  

            }  

            session = (sessionFactory != null) ? sessionFactory.openSession()  

                    : null;  

            threadLocal.set(session);  

        }  

  

        return session;  

    }  

  

    /**  

     *  Rebuild hibernate session factory  

     *  

     */  

    public static void rebuildSessionFactory() {  

        try {  

            configuration.configure(configFile);  

            sessionFactory = configuration.buildSessionFactory();  

        } catch (Exception e) {  

            System.err  

                    .println("%%%% Error Creating SessionFactory %%%%");  

            e.printStackTrace();  

        }  

    }  

  

    /**  

     *  Close the single hibernate session instance.  

     *  

     *  @throws HibernateException  

     */  

    public static void closeSession() throws HibernateException {  

        Session session = (Session) threadLocal.get();  

        threadLocal.set(null);  

  

        if (session != null) {  

            session.close();  

        }  

    }  

  

    /**  

     *  return session factory  

     *  

     */  

    public static org.hibernate.SessionFactory getSessionFactory() {  

        return sessionFactory;  

    }  

  

    /**  

     *  return session factory  

     *  

     *  session factory will be rebuilded in the next call  

     */  

    public static void setConfigFile(String configFile) {  

        HiberSessionFactory.configFile = configFile;  

        sessionFactory = null;  

    }  

  

    /**  

     *  return hibernate configuration  

     *  

     */  

    public static Configuration getConfiguration() {  

        return configuration;  

    }  

  

}</pre><br>  

<pre name="code" class="java">package www.csdn.project.util;  

  

import java.util.ArrayList;  

import java.util.List;  

  

  

/**  

 *   

 * @author Zhangguoliang  

 * 写 牛掰的分页(通用)  

 *   

 * @param <T>  

 */  

public class Pagination<T> extends BaseHibernateDAO {  

  

    // 每页显示的记录数  

    private static final Integer PAGESIZE = 2;  

    // 总页数  

    private Integer countPage;  

    // 当前页  

    private Integer nowPage;  

    // 总记录数  

    private Integer countRecond;  

  

    // 当前页数据  

    private List<T> entities;  

  

    public Pagination(Class<T> className, int nowPage) {  

        this.countRecond = getCountRecord(className);  

        this.nowPage = nowPage;  

        this.countPage = this.countRecond % PAGESIZE == 0 ? this.countRecond  

                / PAGESIZE : this.countRecond /PAGESIZE + 1;  

  

        this.entities = getNowPageInfo(this.nowPage, className);  

    }  

  

    public Integer getCountPage() {  

        return countPage;  

    }  

  

    public void setCountPage(Integer countPage) {  

        this.countPage = countPage;  

    }  

  

    public Integer getNowPage() {  

        return nowPage;  

    }  

  

    public void setNowPage(Integer nowPage) {  

        this.nowPage = nowPage;  

    }  

  

    public Integer getCountRecond() {  

        return countRecond;  

    }  

  

    public void setCountRecond(Integer countRecond) {  

        this.countRecond = countRecond;  

    }  

  

    public List<T> getEntities() {  

        return entities;  

    }  

  

    public void setEntities(List<T> entities) {  

        this.entities = entities;  

    }  

  

    public Integer getCountRecord(Class<T> className) {  

        int i = 0;  

        try {  

            i = Integer.parseInt(this.getSession().createQuery(  

                    "select count(c) from " + className.getName() + " c")  

                    .uniqueResult().toString());  

  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

            HiberSessionFactory.closeSession();  

        }  

        return i;  

    }  

  

    @SuppressWarnings("unchecked")  

    public List<T> getNowPageInfo(Integer nowpage, Class<T> className) {  

  

        List<T> entities = new ArrayList<T>();  

        try {  

  

            entities = this.getSession().createCriteria(className)  

                    .setFirstResult((nowpage - 1) * PAGESIZE).setMaxResults(  

                            PAGESIZE).list();  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  www.2cto.com

            HiberSessionFactory.closeSession();  

        }  

  

        return entities;  

    }  

  

}  

</pre><br>  

<br>  

<br>  

<p></p>