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

📄 topicimpl.java

📁 详细的建站源码 详细的建站源码 详细的建站源码 详细的建站源码
💻 JAVA
字号:
/*
 * Created on 2005-10-15
 * Last modified on 2007-08-21
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.dao.hibernate.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

//import org.apache.log4j.Logger;

import com.yeqiangwei.club.dao.TopicDAO;
import com.yeqiangwei.club.dao.hibernate.support.HibernateFacade;
import com.yeqiangwei.club.dao.model.Topic;
import com.yeqiangwei.club.param.TopicParameter;

/**
 * 社区帖子的  添加 删除  更新操作内容
 * @author YeQiangWei by 我容易么我
 * Powered by YeQiangWei.com
 */
public class TopicImpl implements TopicDAO {
	
	private static final Logger logger = Logger.getLogger(TopicImpl.class);
	
	private static final String UPDATE_BETTER = "update Topic set better=? where topicId=?";
	
	private static final String UPDATE_VIEWS = "update Topic set views=views+1 where topicId=?";
	
	private static final String UPDATE_FORUMID = "update Topic set forumId=? where forumId=?";
	
	private static final String FIND_TOPICID = "from Topic where topicId=?";
	
	private static final String DELETE_TOPICID = "delete from Topic where topicId=?";
	
	private static final String DELETES_TOPICID = "delete from Topic where topicId in (:ids)";
	
	private static final String FIND_PREVIOUS = "from Topic where topicId<? and forumId=? order by topicId desc";
	
	private static final String FIND_NEXT = "from Topic where topicId>? and forumId=?";
	
	public static void main(String args[]){
		com.yeqiangwei.club.dao.hibernate.ConnectionManager.init();
		com.yeqiangwei.club.dao.hibernate.ConnectionManager.beginTransaction();
		TopicImpl t = new TopicImpl();
		Topic item = new Topic();
		item.setTitle("11111111111222222");
		t.create(item);
		
		System.out.println(item);
		/*
		TopicParameter param = new TopicParameter();
		param.setForumId(33);
		param.setPage(1);
		param.setRows(30);
		List<Topic>list = t.findByParameter(param);
		if(list!=null&&list.size()>0){
			for(int i=0; i<list.size(); i++){
				Topic item = list.get(i);
				System.out.println(item.getTitle());
			}
		}else{
			System.out.println("is null");
		}
		*/
		com.yeqiangwei.club.dao.hibernate.ConnectionManager.commitTransaction();
		com.yeqiangwei.club.dao.hibernate.ConnectionManager.closeSession();
	}

	public Topic create(Topic item) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		return facade.save(item);
	}

	public Topic update(Topic item) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		return facade.update(item);
	}

	public int update_forumId(int forumId, int toForumId) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(UPDATE_FORUMID);
		facade.setInt(0, toForumId);
		facade.setInt(1, forumId);
		return facade.executeUpdate();
	}
	
	public int updateViews(int topicId) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(UPDATE_VIEWS);
		facade.setInt(0,topicId);
		return facade.executeUpdate();
	}

	public int updateBetter(int topicId, byte better) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(UPDATE_BETTER);
		facade.setByte(0, better);
		facade.setInt(1,topicId);
		return facade.executeUpdate();
	}

	public int delete(Topic item) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(DELETE_TOPICID);
		facade.setInt(0,item.getTopicId());
		return facade.executeUpdate();
	}

	public int delete(List<Integer> ids) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(DELETES_TOPICID);
		facade.setParameterList("ids",ids);
		return facade.executeUpdate();
	}

	public Topic findById(int id) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(FIND_TOPICID);
		facade.setInt(0,id);
		facade.setCacheable(true);
		return facade.uniqueResult();
	}
	
	public Topic findNextOrPrevious(int topicId, int forumId, boolean isNext) {
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		if(isNext){
			facade.createQuery(FIND_NEXT);
		}else{
			facade.createQuery(FIND_PREVIOUS);
		}
		facade.setInt(0, topicId);
		facade.setInt(1, forumId);
		facade.setMaxResults(1);
		return facade.uniqueResult();
	}
	
	private String getOrderBy(TopicParameter param){
		StringBuffer hql = new StringBuffer();
		if(param.getOrderBy()==null){
			hql.append(" order by replyId desc, topicId desc"); //最后更新的文章
		}
		else if(param.getOrderBy().byteValue()==1){
			hql.append(" order by replyId desc, topicId desc"); //最后更新的文章
		}
		else if(param.getOrderBy().byteValue()==2){ //最新发表的文章
			hql.append(" order by topicId desc");
		}
		else if(param.getOrderBy().byteValue()==3){ //最后被回的文章
			hql.append(" and replys>0 ");
			hql.append(" order by replyId desc");
		}
		else if(param.getOrderBy().byteValue()==4){
			hql.append(" order by topicId");
		}
		else if(param.getOrderBy().byteValue()==5){
			hql.append(" order by views desc"); //最后更新的文章
		}
		return hql.toString();
	}
	
	private String getWhere(TopicParameter param){
		StringBuffer hql = new StringBuffer();
		if(param.getMinId()!=null){
			hql.append(" AND topicId>");
			hql.append(param.getMinId().intValue());
		}
		if(param.getMaxId()!=null){
			hql.append(" AND topicId<");
			hql.append(param.getMaxId().intValue());
		}
		if(param.getForumId()!=null){
			hql.append(" AND (forumId=");
			hql.append(param.getForumId().intValue());
			hql.append(" OR originalForumId=");
			hql.append(param.getForumId().intValue());
			hql.append(")");
		}
		if(param.getIsDeleted()!=null){
			hql.append(" AND isDeleted=");
			if(param.getIsDeleted()){
				hql.append("1");
			}else{
				hql.append("0");
			}
		}
		if(param.getBetter()!=null){
			hql.append(" AND better=");
			hql.append(param.getBetter().byteValue());
		}
		if(param.getLabelId()!=null){
			hql.append(" AND labelId=");
			hql.append(param.getLabelId().intValue());
		}
		if(param.getUserId()!=null){
			hql.append(" AND userId=");
			hql.append(param.getUserId().intValue());
		}
		return hql.toString();
	}
	
	public List<Topic> findByParameter(TopicParameter param) {
		List<Topic> list = null;
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		Connection con = facade.getSession().connection();
		PreparedStatement pps = null;
		ResultSet rs = null;
		StringBuffer sql = new StringBuffer();
		if(param.getPage()>1){
			/*
			 * sql 2005
			 */
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * from (select *, ROW_NUMBER() OVER (");
			sql.append(getOrderBy(param));
			sql.append(") AS RowNo FROM Topic where topicId>0 ");
			sql.append(this.getWhere(param));
			sql.append(") AS A where RowNo>");
			sql.append(param.getRows()*(param.getPage()-1));
		}else{
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * FROM Topic WHERE topicId>0 ");
			sql.append(this.getWhere(param));
			sql.append(getOrderBy(param));
		}
		logger.debug(sql);
		try {
			pps = con.prepareStatement(sql.toString());
			rs = pps.executeQuery();
			list = new ArrayList<Topic>();
			while(rs.next()){
				Topic item = new Topic();
				item.setBetter(rs.getByte("better"));
				item.setContentLength(rs.getInt("contentLength"));
				item.setCreateDateTime(rs.getLong("createDateTime"));
				item.setForumId(rs.getInt("forumId"));
				item.setIsDeleted(rs.getBoolean("isDeleted"));
				item.setIsManaged(rs.getBoolean("isManaged"));
				item.setIsPassed(rs.getBoolean("isPassed"));
				item.setLabelId(rs.getInt("labelId"));
				item.setLastReplyDateTime(rs.getLong("lastReplyDateTime"));
				item.setLastReplyUserId(rs.getInt("lastReplyUserId"));
				item.setLastReplyUserName(rs.getString("lastReplyUserName"));
				item.setLayer(rs.getInt("layer"));
				item.setMood(rs.getByte("mood"));
				item.setMoveDateTime(rs.getLong("moveDateTime"));
				item.setMoveUserId(rs.getInt("moveUserId"));
				item.setMoveUserName(rs.getString("moveUserName"));
				item.setOrderList(rs.getInt("orderList"));
				item.setOriginalForumId(rs.getInt("originalForumId"));
				item.setReplyId(rs.getInt("replyId"));
				item.setReplys(rs.getInt("replys"));
				item.setStyle(rs.getString("style"));
				item.setTitle(rs.getString("title"));
				item.setTopicId(rs.getInt("topicId"));
				item.setTree(rs.getInt("tree"));
				item.setType(rs.getByte("type"));
				item.setUserId(rs.getInt("userId"));
				item.setUserIp(rs.getString("userIp"));
				item.setUserName(rs.getString("userName"));
				item.setViews(rs.getInt("views"));
				list.add(item);
			}
		} catch (SQLException e) {
			logger.error(e.toString());
		}
		return list;
	}
	
	/*
	public List<Topic> findByParameter(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("from Topic where ");
		if(param.getMinId()==null){
			hql.append(" topicId>0 ");
		}else{
			hql.append(" topicId>");
			hql.append(param.getMinId().intValue());
		}
		if(param.getForumId()!=null){
			hql.append(" and (forumId=");
			hql.append(param.getForumId().intValue());
			hql.append(" or originalForumId=");
			hql.append(param.getForumId().intValue());
			hql.append(")");
		}
		if(param.getIsDeleted()!=null){
			hql.append(" and isDeleted=?");
		}
		if(param.getBetter()!=null){
			hql.append(" and better=");
			hql.append(param.getBetter().byteValue());
		}
		if(param.getLabelId()!=null){
			hql.append(" and labelId=");
			hql.append(param.getLabelId().intValue());
		}
		if(param.getUserId()!=null){
			hql.append(" and userId=");
			hql.append(param.getUserId().intValue());
		}
		if(param.getOrderBy()==null){
			hql.append(" order by orderList desc, replyId desc, topicId desc"); //最后更新的文章
		}
		else if(param.getOrderBy().byteValue()==1){
			hql.append(" order by orderList desc, replyId desc, topicId desc"); //最后更新的文章
		}
		else if(param.getOrderBy().byteValue()==2){ //最新发表的文章
			hql.append(" order by topicId desc");
		}else if(param.getOrderBy().byteValue()==3){ //最后被回的文章
			hql.append(" and replys>0 ");
			hql.append(" order by replyId desc");
		}
		else if(param.getOrderBy().byteValue()==4){
			hql.append(" order by topicId");
		}
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(hql);
		if(param.getIsDeleted()!=null){
			facade.setBoolean(0,param.getIsDeleted().booleanValue());
		}
		if(param.getPagination()!=null){
			facade.setFirstResult(param.getPagination().getStartRow());
			facade.setMaxResults(param.getPagination().getEndRow());
			facade.setFetchSize(param.getPagination().getEndRow());
		}
		List<Topic> list = facade.executeQuery();
		return list;
	}
	*/

	public long countByParameter(TopicParameter param) {
		StringBuffer hql = new StringBuffer();
		hql.append("select count(topicId) from Topic where topicId>0 ");
		hql.append(this.getWhere(param));
		//System.out.println(hql);
		HibernateFacade<Topic> facade = new HibernateFacade<Topic>();
		facade.createQuery(hql);
		return facade.resultTotal();
	}

	public List findAll(TopicParameter param) {
		return null;
	}

	public long countAll(TopicParameter param) {
		return 0;
	}
}

⌨️ 快捷键说明

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