package dao.impl;
import dao.MessageDao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import pojo.Message;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
/**
* User: wangyan
* Date: 12-5-23
* Time: 上午9:08
*/
public class MessageDaoImpl implements MessageDao {
private HibernateTemplate template;
private SessionFactory factory;
public HibernateTemplate getTemplate() {
if (template == null) {
template = new HibernateTemplate(this.factory);
}
return template;
}
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
public SessionFactory getFactory() {
return factory;
}
public void setFactory(SessionFactory factory) {
this.factory = factory;
}
@Override
public Serializable saveMessage(Message message) {
return this.getTemplate().save(message);
}
@Override
public void updateMessage(Message message) {
this.getTemplate().saveOrUpdate(message);
}
@Override
public void deleteMessageById(final int id) {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.id= :id").setInteger("id", id);
return query.list();
}
});
Message message= (Message) messages.get(0);
this.getTemplate().delete(message);
}
@Override
public List<Message> getAllInternalNotice() {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","internalnotice");
return query.list();
}
});
return notices;
}
//获取信息总数
public int getInternalNoticeTotalCount(){
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(" from Message as m where m.type= :type").setString("type", "internalnotice");
return query.list();
}
});
return messages.size();
}
//获取总页数
public int getInternalNoticeTotalPage(int pageSize){
int totalCount=this.getInternalNoticeTotalCount();
int totalPage=((totalCount+pageSize)-1)/pageSize;
return totalPage;
}
@Override
public int getPublicNoticeTotalCount() {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(" from Message as m where m.type= :type").setString("type", "publicnotice");
return query.list();
}
});
return messages.size();
}
@Override
public int getPublicNoticeTotalPage(int pageSize) {
int totalCount=this.getPublicNoticeTotalCount();
int totalPage=((totalCount+pageSize)-1)/pageSize;
return totalPage;
}
@Override
public int getNewsTotalCount() {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(" from Message as m where m.type= :type").setString("type", "news");
return query.list();
}
});
return messages.size();
}
@Override
public int getNewsTotalPage(int pageSize) {
int totalCount=this.getNewsTotalCount();
int totalPage=((totalCount+pageSize)-1)/pageSize;
return totalPage;
}
@Override
public List<Message> getInternalNotice(final int pageSize, final int currentPage) {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","internalnotice");
query.setMaxResults(pageSize);
query.setFirstResult(pageSize*(currentPage-1));
return query.list();
}
});
return notices;
}
@Override
public List<Message> getPublicNotice(final int pageSize, final int currentPage) {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","publicnotice");
query.setMaxResults(pageSize);
query.setFirstResult(pageSize*(currentPage-1));
return query.list();
}
});
return notices;
}
@Override
public List<Message> getNews(final int pageSize, final int currentPage) {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","news");
query.setMaxResults(pageSize);
query.setFirstResult(pageSize*(currentPage-1));
return query.list();
}
});
return notices;
}
@Override
public List<Message> getAllPublicNotice() {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","publicnotice");
return query.list();
}
});
return notices;
}
@Override
public List<Message> getAllNews() {
List announcements = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type").setString("type","news");
return query.list();
}
});
return announcements;
}
@Override
public List<Message> getSomeInternalNotice() {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type order by id desc").setString("type","internalnotice");
query.setMaxResults(5);
return query.list();
}
});
return notices;
}
@Override
public List<Message> getSomePublicNotice() {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type order by id desc").setString("type","publicnotice");
query.setMaxResults(5);
return query.list();
}
});
return notices;
}
@Override
public List<Message> getSomeNews() {
List announcements = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type order by id desc ").setString("type","news");
query.setMaxResults(5);
return query.list();
}
});
return announcements;
}
@Override
public Message getOneInternalNoticeByID(final int id) {
List internalnotices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type and m.id= :id");
query.setString("type","internalnotice");
query.setInteger("id",id);
return query.list();
}
});
if(internalnotices==null)
return null;
Message internalnotice= (Message) internalnotices.get(0);
return internalnotice;
}
@Override
public Message getOnePublicNoticeByID(final int id) {
List publicnotices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type and m.id= :id");
query.setString("type","publicnotice");
query.setInteger("id",id);
return query.list();
}
});
if(publicnotices==null)
return null;
Message publicnotice= (Message) publicnotices.get(0);
return publicnotice;
}
@Override
public Message getOneNewsByID(final int id) {
List newses = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.type= :type and m.id= :id");
query.setString("type","news");
query.setInteger("id",id);
return query.list();
}
});
if(newses==null)
return null;
Message news= (Message) newses.get(0);
return news;
}
@Override
public List<Message> getAllMessages() {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message ");
return query.list();
}
});
return messages;
}
@Override
public int getMessageTotalCount() {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(" from Message ");
return query.list();
}
});
return messages.size();
}
@Override
public int getMessageTotalPage(int pageSize) {
int totalCount=this.getMessageTotalCount();
int totalPage=((totalCount+pageSize)-1)/pageSize;
return totalPage;
}
@Override
public List<Message> getMessage(final int pageSize, final int currentPage) {
List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message");
query.setMaxResults(pageSize);
query.setFirstResult(pageSize*(currentPage-1));
return query.list();
}
});
return notices;
}
@Override
public Message getOneMessageByID(final int id) {
List messages = this.getTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Message as m where m.id= :id");
query.setInteger("id",id);
return query.list();
}
});
if(messages==null)
return null;
Message message= (Message) messages.get(0);
return message;
}
}