⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagedao.java

📁 基于struts+hibernate的电子商务网站。可运行。数据库mysql
💻 JAVA
字号:
package tarena.dao;

import java.util.LinkedList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Order;

import tarena.entity.Message;

/**
 * Data access object (DAO) for domain model class Message.
 * 
 * @see tarena.entity.Message
 * @author MyEclipse Persistence Tools
 */

@SuppressWarnings("unchecked")
public class MessageDAO extends BaseHibernateDAO {
	private static final Log log = LogFactory.getLog(MessageDAO.class);

	// property constants
	public static final String SENDNAME = "sendname";

	public static final String RECEIVENAME = "receivename";

	public static final String TITLE = "title";

	public static final String CONTENT = "content";

	public static final String SAVEBOX = "savebox";

	public static final String ISREAD = "isread";

	public static final String MESSTYPE = "messtype";
	
	public static final String SENDTIME = "sendtime";
	
	////////////////////////////////////////////////////
	public static final int  INBOX = 0;    //收件箱
	public static final int  SENDBOX = 1;  //发件箱
	public static final int  DRAFTBOX = 2; //草稿箱

	public void save(Message transientInstance) {
		Session session = getSession();
		try {
			session.beginTransaction();
			session.save(transientInstance);
			session.getTransaction().commit();			
		} catch (RuntimeException re) {	
			session.getTransaction().rollback();
			throw re;
		} finally{
			closeSession();
		}
	}
	
	public void saveOrUpdate(Message transientInstance) {
		Session session = getSession();
		try {
			session.beginTransaction();
			session.saveOrUpdate(transientInstance);
			session.getTransaction().commit();			
		} catch (RuntimeException re) {	
			session.getTransaction().rollback();
			throw re;
		} finally{
			closeSession();
		}
	}

	public void delete(Message persistentInstance) {
		Session session = getSession();
		try {
			session.beginTransaction();
			session.delete(persistentInstance);
			session.getTransaction().commit();			
		} catch (RuntimeException re) {
			session.getTransaction().rollback();
			throw re;
		} finally{
			closeSession();
		}
	}
	
	public void delete(List<Message> messages) {
		Session session = getSession();
		try {
			session.beginTransaction();
			for(Message m:messages){				
				session.delete(m);
			}
			session.getTransaction().commit();			
		} catch (RuntimeException re) {
			session.getTransaction().rollback();
			throw re;
		} finally{
			closeSession();
		}
	}

	public Message findById(java.lang.Integer id) {		
		try {
			Message instance = (Message) getSession().get(
					"tarena.entity.Message", id);
			return instance;
		} catch (RuntimeException re) {
			return null;
		} finally {
			closeSession();
		}
	}
	
	public List<Message> findByIds(List<Integer> ids) {	
		List<Message> messages = new LinkedList<Message>();
		try {
			for(Integer id:ids){				
				Message instance = null;					
				try {
					instance = (Message) getSession().get(
							"tarena.entity.Message", id);
				} catch (RuntimeException e) {
					instance = null;
				}
				if(instance!=null){
					messages.add(instance);
				}
			}
			return messages;
		} catch (RuntimeException re) {
			return null;
		} finally {
			closeSession();
		}
	}
	
	/**
	 * 查询收件箱的信息并分页显示。按是否已读和发送日期降序排列,每页显示limit条。
	 * @param instance  做为Example的message实例
	 * @param limit 	每页显示的条数
	 * @return 			返回的结果集
	 */
	public List<Message> findInBox(String receivename,int limit){
		try {
			StringBuffer hql = new StringBuffer();
			hql.append("from Message m ");
			hql.append("where m."+RECEIVENAME+"=? ");
			hql.append("and m."+MESSTYPE+"!="+DRAFTBOX);
			hql.append("order by m."+ISREAD+",m."+SENDTIME);
			List results = getSession()
						   .createQuery(hql.toString())
						   .setParameter(0, receivename)
						   .setFirstResult(0)
						   .setMaxResults(limit)
						   .list();			
			return results;
		} catch (RuntimeException re) {
			return null;			
		} finally{
			closeSession();
		}
	}
	
	
	
	/**
	 * 查询某用户收件箱中的信息个数
	 * @param receivename 接收用户名
	 * @param newMess	  消息类型 true 表示为查询未读信息,false表示查询全部信息
	 * @return 			  符合结果的信息的个数。
	 */
	public int countMessageInBox(String receivename,boolean newMess){
		try {
			StringBuffer sql = new StringBuffer();
			sql.append("select count(*) re from message m ");
			sql.append("where m."+RECEIVENAME+"= '"+receivename+"' ");
			sql.append(" and m."+MESSTYPE+"!="+DRAFTBOX);
			if(newMess){			
				sql.append(" and m."+ISREAD+"=false ");
			}
			//System.out.println(sql);
			return (Integer)getSession()
				   .createSQLQuery(sql.toString())
				   .addScalar("re", Hibernate.INTEGER)			   
				   .uniqueResult();
		} catch (HibernateException e) {			
			return 0;
		} finally{
			closeSession();
		}
	}
	
	/**
	 * 查询发送(包含草稿箱)信息并分页显示。按发送日期降序排列,每页显示limit条。
	 * @param sendname 	发送者的用户名
	 * @param messType	消息类型 
	 * 						使用Message.SENDBOX 为查询发件箱中的信息
	 * 						使用Message.DRAFTBOX 为查询草稿箱中的信息
	 * @param limit 	每页显示的条数
	 * @return 			返回的结果集
	 */
	public List<Message> findSendMessage(String sendname,int messType, int limit){
		try {
			StringBuffer hql = new StringBuffer();
			hql.append("from Message m ");
			hql.append("where m."+SENDNAME+"=? ");
			hql.append("and m."+MESSTYPE+"="+messType);
			hql.append("order by m."+SENDTIME);
			List results = getSession()
						   .createQuery(hql.toString())
						   .setParameter(0, sendname)
						   .setFirstResult(0)
						   .setMaxResults(limit)
						   .list();			
			return results;
		} catch (RuntimeException re) {
			return null;			
		} finally{
			closeSession();
		}		
	}
	
	/**
	 * 查询某用户发送(包含草稿箱)的全部信息个数
	 * @param receivename 接收用户名
	 * @param messType	  消息类型 
	 * 						使用Message.SENDBOX 为查询发件箱中的信息个数
	 * 						使用Message.DRAFTBOX 为查询草稿箱中的信息个数		
	 * @return 			  对应信箱的信息个数。
	 */
	public int countSendMessage(String sendname,int messType){
		try {
			StringBuffer sql = new StringBuffer();
			sql.append("select count(*) re from message m ");
			sql.append("where m."+SENDNAME+"= '"+sendname+"' ");
			sql.append(" and m."+MESSTYPE+"="+messType);		
			System.out.println(sql);
			return (Integer)getSession()
				   .createSQLQuery(sql.toString())
				   .addScalar("re", Hibernate.INTEGER)			   
				   .uniqueResult();
		} catch (HibernateException e) {
			return 0;
		} finally{
			closeSession();
		}
	}
	
	public List findByExample(Message instance) {		
		try {
			List results = getSession().createCriteria("tarena.entity.Message")
					.add(Example.create(instance)).list();			
			return results;
		} catch (RuntimeException re) {
			return null;			
		} finally{
			closeSession();
		}
	}

	public List findByProperty(String propertyName, Object value) {
		
		try {
			String queryString = "from Message as model where model."
					+ propertyName + "= ?";
			Query queryObject = getSession().createQuery(queryString);
			queryObject.setParameter(0, value);
			return queryObject.list();
		} catch (RuntimeException re) {
			return null;
		} finally{
			closeSession();
		}
	}

	public List findBySendname(Object sendname) {
		return findByProperty(SENDNAME, sendname);
	}

	public List findByReceivename(Object receivename) {
		return findByProperty(RECEIVENAME, receivename);
	}

	public List findByTitle(Object title) {
		return findByProperty(TITLE, title);
	}

	public List findByContent(Object content) {
		return findByProperty(CONTENT, content);
	}

	public List findBySavebox(Object savebox) {
		return findByProperty(SAVEBOX, savebox);
	}

	public List findByIsread(Object isread) {
		return findByProperty(ISREAD, isread);
	}

	public List findByMesstype(Object messtype) {
		return findByProperty(MESSTYPE, messtype);
	}

	public List findAll() {		
		try {
			String queryString = "from Message";
			Query queryObject = getSession().createQuery(queryString);
			return queryObject.list();
		} catch (RuntimeException re) {
			return null;
		} finally{
			closeSession();
		}
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -