NewsDAOImpl.java
上传用户:junmaots
上传日期:2022-07-09
资源大小:2450k
文件大小:9k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /*
  2.  * Created on 2005-11-10
  3.  *
  4.  * TODO To change the template for this generated file go to
  5.  * Window - Preferences - Java - Code Style - Code Templates
  6.  */
  7. package com.mycompany.news.dao.impl;
  8. import java.sql.Connection;
  9. import java.sql.Date;
  10. import java.sql.PreparedStatement;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import com.mycompany.database.Database;
  16. import com.mycompany.news.dao.NewsAttributeDAO;
  17. import com.mycompany.news.dao.NewsDAO;
  18. import com.mycompany.news.dto.News;
  19. import com.mycompany.tools.DTOPopulator;
  20. import com.opensymphony.util.BeanUtils;
  21. /**
  22.  * @author Administrator
  23.  *
  24.  * TODO To change the template for this generated type comment go to
  25.  * Window - Preferences - Java - Code Style - Code Templates
  26.  */
  27. public class NewsDAOImpl implements NewsDAO{
  28. Connection connection = null;
  29. /**
  30.  * @return Returns the connection.
  31.  */
  32. public Connection getConnection() {
  33. return connection;
  34. }
  35. /**
  36.  * @param connection The connection to set.
  37.  */
  38. public void setConnection(Connection connection) {
  39. this.connection = connection;
  40. }
  41. public void addNews(News news) throws SQLException{
  42. String sql="insert into News_Info(column_id,subject,create_time,show_time,content,author,news_Status) values(?,?,?,?,?,?,?)";
  43. PreparedStatement ps = connection.prepareStatement(sql);
  44. int i=1;
  45. ps.setLong(i++,news.getColumnId().longValue());
  46. ps.setString(i++,news.getSubject());
  47. ps.setDate(i++,new Date(new java.util.Date().getTime()));
  48. ps.setDate(i++,new Date(news.getShowTime().getTime()));
  49. ps.setString(i++,news.getContent());
  50. ps.setString(i++,news.getAuthor());
  51. ps.setInt(i++,news.getNewsStatus().intValue());
  52. ps.executeUpdate();
  53. ps.close();
  54. }
  55. public void updateNews(News news)throws Exception{
  56. List Newss = new ArrayList();
  57. Newss.add("subject");
  58. Newss.add("show_Time");
  59. Newss.add("content");
  60. Newss.add("author");
  61. StringBuffer sqlString=new StringBuffer();
  62. sqlString.append("update News_Info set ");
  63. for(int i=0;i<Newss.size();i++){
  64. if(Newss.size()-1==i)
  65. sqlString.append(Newss.get(i)+"=? ");
  66. else
  67. sqlString.append(Newss.get(i)+"=?, ");
  68. }
  69. sqlString.append(" where News_id=?");
  70. System.out.println(sqlString);
  71. PreparedStatement ps = connection.prepareStatement(sqlString.toString());
  72. for(int i=0;i<Newss.size();i++){
  73. Object value = BeanUtils.getValue(news,((String)Newss.get(i)).replaceAll("_",""));
  74. // if(value instanceof java.util.Date){
  75. // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  76. // value = sdf.format(value);
  77. // System.out.println("value = "+value);
  78. // }
  79. ps.setObject(i+1,value);
  80. }
  81. ps.setLong(Newss.size()+1,news.getNewsId().longValue());
  82. ps.executeUpdate();
  83. ps.close();
  84. }
  85. public void deleteNews(News news)throws Exception{
  86. String sqlString="delete from News_Info where News_id=?";
  87. PreparedStatement ps = connection.prepareStatement(sqlString);
  88. ps.setLong(1,news.getNewsId().longValue());
  89. ps.executeUpdate();
  90. ps.close();
  91. }
  92. public List listAllNews() throws Exception{
  93. PreparedStatement ps = connection.prepareStatement("select * from News_Info order by show_time desc");
  94. ResultSet rs = ps.executeQuery();
  95. List list = DTOPopulator.populate(rs,News.class);
  96. rs.close();
  97. ps.close();
  98. return list;
  99. }
  100. public List listNews(News newsCondition,int curPage,int perpage)throws Exception{
  101. StringBuffer stringBuffer = new StringBuffer();
  102. stringBuffer.append("select * from news_info where 1=1 ");
  103. if(newsCondition.getColumnId()!=null){
  104. stringBuffer.append(" and column_id=? ");
  105. }
  106. if(newsCondition.getSubject()!=null){
  107. stringBuffer.append(" and subject like ? ");
  108. }
  109. stringBuffer.append(" order by show_time desc limit ?,?");
  110. PreparedStatement ps = connection.prepareStatement(stringBuffer.toString());
  111. int i=1;
  112. if(newsCondition.getColumnId()!=null){
  113. ps.setLong(i++,newsCondition.getColumnId().longValue());
  114. }
  115. if(newsCondition.getSubject()!=null){
  116. ps.setString(i++,"%"+newsCondition.getSubject()+"%");
  117. }
  118. ps.setInt(i++,(curPage-1)*perpage);
  119. ps.setInt(i++,perpage);
  120. ResultSet rs = ps.executeQuery();
  121. return DTOPopulator.populate(rs,News.class);
  122. }
  123. public News getByID(long id)throws Exception{
  124. PreparedStatement ps = connection.prepareStatement("select * from news_info where news_id=?");
  125. ps.setLong(1,id);
  126. ResultSet rs = ps.executeQuery();
  127. return (News) DTOPopulator.populate(rs,News.class).get(0);
  128. }
  129. /* (non-Javadoc)
  130.  * @see com.mycompany.news.dao.NewsDAO#getRecommendedNews(int)
  131.  */
  132. public List getRecommendedNews(long channelid,int curPage,int max) throws Exception {
  133. // TODO Auto-generated method stub
  134. String sqlStr=" select ni.* from News_Info ni " +
  135. " join news_attribute na on ni.news_id=na.entity_id " +
  136. " join news_column nc on ni.column_id=nc.column_id" +
  137. " join channel ch on nc.channel_id=ch.channel_id" +
  138. " where na.news_attr_type=0 and na.news_attr_name=? and na.news_attr_value=?  and na.news_attr_type=? and ch.channel_id=? order by ni.show_time desc limit ?,?";
  139. PreparedStatement ps = connection.prepareStatement(sqlStr);
  140. int i=1;
  141. ps.setString(i++,"is_recommend");
  142. ps.setString(i++,"true");
  143. ps.setInt(i++,0);
  144. ps.setLong(i++,channelid);
  145. ps.setInt(i++,(curPage-1)*max);
  146. ps.setInt(i++,max);
  147. ResultSet rs = ps.executeQuery();
  148. return DTOPopulator.populate(rs,News.class);
  149. }
  150. public int getRecommendedNewsCount(long channelid) throws Exception {
  151. // TODO Auto-generated method stub
  152. String sqlStr=" select count(*) as count from News_Info ni " +
  153. " join news_attribute na on ni.news_id=na.entity_id " +
  154. " join news_column nc on ni.column_id=nc.column_id" +
  155. " join channel ch on nc.channel_id=ch.channel_id" +
  156. " where na.news_attr_type=0 and na.news_attr_name=? and na.news_attr_value=?  and na.news_attr_type=? and ch.channel_id=?";
  157. PreparedStatement ps = connection.prepareStatement(sqlStr);
  158. int i=1;
  159. ps.setString(i++,"is_recommend");
  160. ps.setString(i++,"true");
  161. ps.setInt(i++,1);
  162. ps.setLong(i++,channelid);
  163. ResultSet rs = ps.executeQuery();
  164. if(rs.next()){
  165. return rs.getInt("count");
  166. }
  167. return 0;
  168. }
  169. /* (non-Javadoc)
  170.  * @see com.mycompany.news.dao.NewsDAO#getCurrentID()
  171.  */
  172. public synchronized Long getCurrentID() throws SQLException {
  173. PreparedStatement preparedStatement = connection.prepareStatement("select max(ni.news_id) as m from news_info ni");
  174. ResultSet resultSet = preparedStatement.executeQuery();
  175. if(resultSet.next()){
  176. long currentID = resultSet.getLong("m");
  177. return new Long(currentID);
  178. }
  179. return null;
  180. }
  181. /* (non-Javadoc)
  182.  * @see com.mycompany.news.dao.NewsDAO#recommendNews(long)
  183.  */
  184. public void recommendNews(long news) throws Exception {
  185. String sqlStr="insert into news_attribute(news_attr_name, news_attr_value,entity_id,news_attr_type) values(?,?,?,?)";
  186. PreparedStatement ps = connection.prepareStatement(sqlStr);
  187. int i=1;
  188. ps.setString(i++,"is_recommend");
  189. ps.setString(i++,"true");
  190. ps.setLong(i++,news);
  191. ps.setInt(i++,0);
  192. ps.executeUpdate();
  193. }
  194. /* (non-Javadoc)
  195.  * @see com.mycompany.news.dao.NewsDAO#cancelRecommend(long)
  196.  */
  197. public void cancelRecommend(long news) throws Exception {
  198. String sqlStr="delete from news_attribute where news_attr_name=? and news_attr_value=? and entity_id=?";
  199. PreparedStatement ps = connection.prepareStatement(sqlStr);
  200. int i=1;
  201. ps.setString(i++,"is_recommend");
  202. ps.setString(i++,"true");
  203. ps.setLong(i++,news);
  204. ps.executeUpdate();
  205. }
  206. /* (non-Javadoc)
  207.  * @see com.mycompany.news.dao.NewsDAO#updateVisitCount()
  208.  */
  209. public void updateVisitCount(long newsid) throws Exception {
  210. NewsAttributeDAO attrDAO = new NewsAttributeDAOImpl();
  211. String updateSQL="update news_attribute set news_attr_value=news_attr_value+'1' where news_attr_name=? and entity_id=? and news_attr_type=?";
  212. String insertSQL="insert into news_attribute(news_attr_name,news_attr_value,entity_id,news_attr_type) values(?,?,?,?)";
  213. attrDAO.setConnection(connection);
  214. String visitCount = attrDAO.getAttributeValue(newsid,"visit_count",0);
  215. PreparedStatement ps =null;
  216. if(visitCount==null){
  217. ps= connection.prepareStatement(insertSQL);
  218. int i=1;
  219. ps.setString(i++,"visit_count");
  220. ps.setString(i++,"1");
  221. ps.setLong(i++,newsid);
  222. ps.setInt(i++,0);
  223. }else{
  224. ps= connection.prepareStatement(updateSQL);
  225. int i=1;
  226. ps.setString(i++,"visit_count");
  227. ps.setLong(i++,newsid);
  228. ps.setInt(i++,0);
  229. }
  230. int i = ps.executeUpdate();
  231. System.out.println(i);
  232. }
  233. public static void main(String[] args) {
  234. NewsDAO dao = new NewsDAOImpl();
  235. Connection conn=null;
  236. try{
  237. conn = Database.getConnection();
  238. dao.setConnection(conn);
  239. dao.updateVisitCount(13);
  240. Database.commit();
  241. }catch(Exception e){
  242. e.printStackTrace();
  243. }
  244. finally{
  245. Database.releaseConnection(conn);
  246. }
  247. }
  248. }