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