replyimpl.java
来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 394 行
JAVA
394 行
/*
* Created on 2007-1-22
* Last modified on 2007-12-20
* 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.hibernate.HibernateException;
import com.yeqiangwei.club.dao.ReplyDAO;
import com.yeqiangwei.club.dao.hibernate.support.HibernateFacade;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.exception.DAOException;
import com.yeqiangwei.club.param.TopicParameter;
import com.yeqiangwei.util.Validator;
public class ReplyImpl implements ReplyDAO{
private static final String UPDATE_ISMANAGED = "update Reply set isManaged=? where replyId=?";
private static final String FIND_REPLYID = "from Reply where replyId=?";
//private static final String FIND_TOPICID = "from Reply where topicId=?";
private static final String DELETE_REPLYID = "delete from Reply where replyId=?";
private static final String DELETES_REPLYID = "delete from Reply where replyId in (:ids)";
private static final String DELETE_TOPICID = "delete from Reply where topicId=?";
private static final String DELETES_TOPICID = "delete from Reply where topicId in (:ids)";
private static final String UPDATE_FORUMID_TOPICID = "update Reply set forumId=? where topicId=?";
private static final Logger logger = Logger.getLogger(ReplyImpl.class);
public int updateForumIdByTopicId(int topicId, int forumId){
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(UPDATE_FORUMID_TOPICID);
facade.setInt(0, forumId);
facade.setInt(1, topicId);
return facade.executeUpdate();
}
public void create(Reply item) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.save(item);
}
public void update(Reply item) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.update(item);
}
@Override
public int updateIsManaged(int replyId, boolean isManaged)
throws DAOException {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(UPDATE_ISMANAGED);
facade.setBoolean(0, isManaged);
facade.setInt(1, replyId);
return facade.executeUpdate();
}
/*
* tree utils method
*/
public int updatesOrderlistByTopicId(Reply item)
{
StringBuffer hql = new StringBuffer();
hql.append("update Reply set orderlist=orderlist+1 ");
if(item.getReplyId()==0){
hql.append(" where topicId=");
hql.append(item.getTopicId());
}else{
hql.append(" where topicId=");
hql.append(item.getTopicId());
hql.append(" and orderlist>");
hql.append(item.getOrderlist());
}
logger.debug(hql);
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql.toString());
return facade.executeUpdate();
}
public int delete(Reply item) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(DELETE_REPLYID);
facade.setInt(0, item.getReplyId());
return facade.executeUpdate();
}
public int delete(List<Integer> ids) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(DELETES_REPLYID);
facade.setParameterList("ids",ids);
return facade.executeUpdate();
}
public int deleteByTopicId(List<Integer> ids) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(DELETES_TOPICID);
facade.setParameterList("ids",ids);
return facade.executeUpdate();
}
public int deleteByTopicId(int topicId) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(DELETE_TOPICID);
facade.setInt(0, topicId);
return facade.executeUpdate();
}
public Reply findById(int id) {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(FIND_REPLYID);
facade.setInt(0, id);
facade.setMaxResults(1);
return facade.uniqueResult();
}
private String getWhere(TopicParameter param){
StringBuffer hql = new StringBuffer();
if(param.getTopicId()!=null){
hql.append(" and topicId=");
hql.append(param.getTopicId().intValue());
}
if(param.getUserId()!=null){
hql.append(" and userId=");
hql.append(param.getUserId().intValue());
}
if(param.getIsDeleted()!=null){
if(param.getIsDeleted().booleanValue()){
hql.append(" and isDeleted=1");
}else{
hql.append(" and isDeleted=0");
}
}
if(!Validator.isEmpty(param.getForumIdList())){
StringBuffer temp = new StringBuffer();
temp.append(" AND forumId in(");
for(int i=0; i<param.getForumIdList().size(); i++){
temp.append(param.getForumIdList().get(i));
if(i<param.getForumIdList().size()-1){
temp.append(",");
}
}
temp.append(")");
hql.append(temp);
}
if(!Validator.isEmpty(param.getUserIdList())){
StringBuffer temp = new StringBuffer();
temp.append(" AND userId in(");
for(int i=0; i<param.getUserIdList().size(); i++){
temp.append(param.getUserIdList().get(i));
if(i<param.getUserIdList().size()-1){
temp.append(",");
}
}
temp.append(")");
hql.append(temp);
}
return hql.toString();
}
private String getOrderBy(TopicParameter param){
StringBuffer hql = new StringBuffer();
if(param.getOrderBy()==null){
hql.append(" order by replyId");
}
else if(param.getOrderBy().byteValue()==0){
hql.append(" order by replyId");
}
else if(param.getOrderBy().byteValue()==1){
hql.append(" order by orderlist");
}
else if(param.getOrderBy().byteValue()==2){
hql.append(" order by replyId desc");
}
return hql.toString();
}
public List<Reply> findByParameter(TopicParameter param){
List<Reply> list = null;
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
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 Reply where replyId>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 Reply WHERE replyId>0 ");
sql.append(this.getWhere(param));
sql.append(getOrderBy(param));
}
logger.debug(sql);
try {
list = new ArrayList<Reply>();
pps = con.prepareStatement(sql.toString());
rs = pps.executeQuery();
while(rs.next()){
Reply item = new Reply();
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.setLastReplyDateTime(rs.getLong("lastReplyDateTime"));
item.setLastReplyUserName(rs.getString("lastReplyUserName"));
item.setLayer(rs.getInt("layer"));
item.setMood(rs.getByte("mood"));
item.setReplyId(rs.getInt("replyId"));
item.setReplys(rs.getInt("replys"));
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"));
item.setOrderlist(rs.getInt("orderList"));
item.setProject(rs.getByte("project"));
list.add(item);
}
} catch (SQLException e) {
logger.error(e.toString());
}
return list;
}
/*
public List<Reply> findByParameter(TopicParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("from Reply where replyId>0");
if(param.getTopicId()!=null){
hql.append(" and topicId=");
hql.append(param.getTopicId().intValue());
}
if(param.getUserId()!=null){
hql.append(" and userId=");
hql.append(param.getUserId().intValue());
}
if(param.getIsDeleted()!=null){
hql.append(" and isDeleted=?");
}
if(param.getOrderBy()==null){
hql.append(" order by replyId");
}
else if(param.getOrderBy().byteValue()==0){
hql.append(" order by replyId");
}
else if(param.getOrderBy().byteValue()==1){
hql.append(" order by orderlist");
}
else if(param.getOrderBy().byteValue()==2){
hql.append(" order by replyId desc");
}
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql);
if(param.getIsDeleted()!=null){
facade.setBoolean(0,param.getIsDeleted().booleanValue());
}
facade.setFirstResult(param.getPagination().getStartRow());
facade.setMaxResults(param.getPagination().getEndRow());
return facade.executeQuery();
}
*/
public long countByParameter(TopicParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("select count(replyId) from Reply where replyId>0 ");
hql.append(this.getWhere(param));
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql);
return facade.resultTotal();
}
public List<Reply> findAll(TopicParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("from Reply ");
if(param.getIsDeleted()!=null){
hql.append(" where isDeleted=?");
}
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql);
if(param.getIsDeleted()!=null){
facade.setBoolean(0,param.getIsDeleted().booleanValue());
}
facade.setFirstResult(param.getPagination().getStartRow());
facade.setMaxResults(param.getPagination().getEndRow());
return facade.executeQuery();
}
public long countAll(TopicParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("select count(replyId) from Reply ");
if(param.getIsDeleted()!=null){
hql.append(" where isDeleted=?");
}
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql);
if(param.getIsDeleted()!=null){
facade.setBoolean(0,param.getIsDeleted().booleanValue());
}
return facade.resultTotal();
}
public Reply findLastReply() {
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery("from Reply order by replyId desc");
facade.setMaxResults(1);
return facade.uniqueResult();
}
@Override
public Object findReplyAndContents(TopicParameter param) {
StringBuffer hql = new StringBuffer();
hql.append("select r, c from Reply as r, RContent as c where r.replyId=c.replyId ");
if(param.getTopicId()!=null){
hql.append(" and r.topicId=");
hql.append(param.getTopicId().intValue());
}
if(param.getUserId()!=null){
hql.append(" and r.userId=");
hql.append(param.getUserId().intValue());
}
if(param.getIsDeleted()!=null){
hql.append(" and r.isDeleted=?");
}
if(param.getOrderBy()==null){
hql.append(" order by r.replyId");
}
else if(param.getOrderBy().byteValue()==0){
hql.append(" order by r.replyId");
}
else if(param.getOrderBy().byteValue()==1){
hql.append(" order by r.orderlist");
}
else if(param.getOrderBy().byteValue()==2){
hql.append(" order by r.replyId desc");
}
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql);
if(param.getIsDeleted()!=null){
facade.setBoolean(0,param.getIsDeleted().booleanValue());
}
facade.setFirstResult(param.getPagination().getStartRow());
facade.setMaxResults(param.getPagination().getEndRow());
return facade.executeQuery();
}
@Override
public int update_forumId(int forumId, int toForumId) {
StringBuffer hql = new StringBuffer();
hql.append("update Reply set forumId="+toForumId+" where forumId="+forumId);
HibernateFacade<Reply> facade = new HibernateFacade<Reply>();
facade.createQuery(hql.toString());
try{
return facade.executeUpdate();
}catch(HibernateException e){
throw new DAOException(e);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?