📄 messagedao.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 + -