?? newshibernatedao.java.svn-base
字號:
package com.pure.dao.hibernate;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import com.pure.dao.NewsDAO;
import com.pure.domain.News;
import com.pure.freemarker.MakeFile;
import com.pure.freemarker.TemplateParam;
import com.pure.page.Page;
/**
* 新聞DAO接口實現類
*
* @author pure
*
*/
public class NewsHibernateDAO extends BaseDao implements NewsDAO {
protected final Log logger = LogFactory.getLog(getClass());
/**
* 新增一條新聞
*
* @param news
* 新聞數據對象
*/
public void insertNews(News news) throws DataAccessException {
TemplateParam templateParam = SetTemplateParam(news);
// 生成靜態新聞
news.setFilename(new MakeFile().make(news, templateParam));
this.getHibernateTemplate().save(news);
}
/**
* 修改新聞
*
* @param news
*
*/
public void updateNews(News news) throws DataAccessException {
TemplateParam templateParam = SetTemplateParam(news);
// 更新原來的靜態新聞
new MakeFile().update(news, templateParam);
this.getHibernateTemplate().update(news);
}
/**
* 根據指定翻頁器返回list結果集
*
* @param page
* 翻頁器
* @return 指定翻頁后的結果集
*/
public List getNewsList(final Page page) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,
SQLException {
Query query = s.createQuery(page.getHql());
query.setFirstResult(page.getStartRs());
query.setMaxResults(page.getPerPage());
List list = query.list();
return list;
}
});
}
public List getNewsList(final int num) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,
SQLException {
Query query = s
.createQuery("from News as news left join fetch news.newssort where news.newssort.code='news' order by news.id desc");
query.setFirstResult(0);
query.setMaxResults(num);
List list = query.list();
return list;
}
});
}
/**
* 取得指定ID的新聞
*
* @param id
*
*/
public News getNews(final int id) {
List dataList = this
.getHibernateTemplate()
.find(
"from News news left join fetch news.newssort where news.id = ?",
new Long(id));
if (dataList.size() == 0) {
return null;
} else {
return (News) dataList.get(0);
}
}
/**
* 刪除指定id新聞
*
* @param id
* 要刪除的新聞id
*/
public void delNews(final int id) {
getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,
SQLException {
Query query = s.createQuery("delete News where id=:id");
query.setInteger("id", id);
query.executeUpdate();
return null;
}
});
}
/**
* 設計模板參數
*
* @param news
* @return
*/
private TemplateParam SetTemplateParam(News news) {
// 設置模板參數
TemplateParam templateParam = new TemplateParam();
templateParam.setRealPath(news.getRealPath());
templateParam.setTemplateName("news.ftl");
return templateParam;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -