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

📄 spaceservice.java

📁 一个较简单的论坛——中国精英论坛,是我的一个练习
💻 JAVA
字号:
package com.serviceImp;import java.util.*;import com.bean.*;import static com.common.HibernateSessionFactory.*;import com.common.*;import java.sql.*;import org.hibernate.*;/** * 论坛的业务逻辑层 * 提供,发帖,回帖以及按照顺序分页显示等功能 */public class SpaceService {	//工厂	public static SpaceService getSpaceService(){		return new SpaceService();	}	//刷新访问量	public void refreshCount(Talk talk){		//get()		//t.setcount(t.getCount()+1);		//update    set count=count+1;	}	//发帖	public boolean add(User user,String talkName,String talkContent,boolean top){		Talk talk=new Talk();		talk.setTalkName(talkName);		talk.setTalkContent(talkContent);		talk.setUser(user);		talk.setTop(top);						Session session = getSession();		Transaction trans = session.beginTransaction();		session.save(talk);		trans.commit();		session.close();		return true;	}//---------------------------------------------------------------------------------------------------------------------		//按照id还原Talk对象	public Talk getTalk(final Long id ,boolean isCommited){		Session session=getSession();		Transaction trans=session.beginTransaction();		final Talk talk=(Talk)session.get(Talk.class,id);		Hibernate.initialize(talk.getUser());  //初始化一定不要忘记(JDBC与hibernate融合时)		Connection conn=session.connection();		String sql="select timestr from zhao_talk_tbl where id=?";		JDBCTemplate temp=new JDBCTemplate();		temp.query(sql,new PreparedStatementSetter(){			public void setter(PreparedStatement pstmt)throws SQLException{				pstmt.setLong(1,id);			}		},new Handler(){			public void handler(ResultSet rs) throws SQLException {				if (rs.next()) 					talk.setTimeStr(rs.getTimestamp(1).toLocaleString());					}		},conn);		if(isCommited){			trans.commit();			session.close();		}			return talk;	}//-----------------------------------------------------------------------------------------------------------------		//分页功能实现:                       第几页        每页记录数    按照什么排序(置顶不排序) 																	//按照时间(默认)-timestr,点击量-count,回帖量-space																						//升序还是降序asc/desc	public List<Talk> getTalk(int pageCount,int count,String orderKey,String orderType){		Session session=getSession();		Transaction trans=session.beginTransaction();		Connection conn=session.connection(); 		List<Talk> sublist=null;		final List<Talk> ntoplist=new ArrayList<Talk>();				//向集合list中先放置顶的帖子**********************************************		final List<Talk> list=new ArrayList<Talk>();		JDBCTemplate temp=new JDBCTemplate();		String sql="select id from zhao_talk_tbl where top=1 order by timestr desc ";		temp.query(sql, new Handler(){			public void handler(ResultSet rs)throws SQLException{				while(rs.next()) {					list.add(getTalk(rs.getLong(1),false));				}			}		}, conn);				//按照回帖量排序************************************************************		if("space".equals(orderKey)){						//回帖量为0			final List<Talk> ntoplist1=new ArrayList<Talk>();			String ntopsql1="select id from zhao_talk_tbl where id not in(select talkid from zhao_space_tbl) and top=0"					+"order by timestr asc";				JDBCTemplate temp2=new JDBCTemplate();			temp2.query(ntopsql1, new Handler(){				public void handler(ResultSet rs)throws SQLException{					while(rs.next()) {						ntoplist1.add(getTalk(rs.getLong(1),false));					}				}			}, conn);					//回帖量不为0			final List<Talk> ntoplist2=new ArrayList<Talk>();			String ntopsql2="select talkid,count(*) from zhao_space_tbl group by talkid order by count(*)"				+"order by "+orderKey+" "+orderType;							JDBCTemplate temp3=new JDBCTemplate();			temp3.query(ntopsql2, new Handler(){				public void handler(ResultSet rs)throws SQLException{					while(rs.next()) {						ntoplist2.add(getTalk(rs.getLong(1),false));					}				}			}, conn);										if("asc".equals(orderType)){				ntoplist.addAll(0,ntoplist1);				ntoplist.addAll(ntoplist.size(),ntoplist2);			}else{				ntoplist.addAll(0,ntoplist2);				ntoplist.addAll(ntoplist.size(),ntoplist1);			}					}else{		//按照时间或点击量向集合ntoplist中放置非置顶的帖子***********************			String ntopsql="select id from zhao_talk_tbl where top=0 order by "+orderKey+" "+orderType;							JDBCTemplate temp2=new JDBCTemplate();			temp2.query(ntopsql, new Handler(){				public void handler(ResultSet rs)throws SQLException{					while(rs.next()) {						ntoplist.add(getTalk(rs.getLong(1),false));					}				}			}, conn);					}		//通过以上会得到两个数组:一个是list(已经放了置顶帖子),一个是ntoplist(不置顶帖子的集合)			int topCount=list.size();		int ntopstep=0;		if((count-topCount)*pageCount<=ntoplist.size()){			ntopstep=count-topCount;			sublist=ntoplist.subList(ntopstep*(pageCount-1),ntopstep*(pageCount-1)+ntopstep);			}else{			ntopstep=count-topCount;			int ntopstep2=ntoplist.size()-(count-topCount)*(pageCount-1);//ntopstep2大于0合法还是小于0不合法			sublist=ntoplist.subList(ntopstep*(pageCount-1),ntopstep*(pageCount-1)+ntopstep2);		}				list.addAll(sublist);				trans.commit();		session.close(); 		return list;			}		//**********************************space**************************//------------------------------------------------------------------------------------------------------------	//按照id查找某一回帖	public Space getSpace(final Long id,boolean isCommited){		Session session = getSession();		Transaction trans = session.beginTransaction();		final Space space=(Space)session.get(Space.class,id);		Connection conn=session.connection();		//整合				String sql="select timestr from zhao_space_tbl where id=?";		JDBCTemplate temp=new JDBCTemplate();		temp.query(sql,new PreparedStatementSetter(){			public void setter(PreparedStatement pstmt)throws SQLException{				pstmt.setLong(1,id);			}		},new Handler(){			public void handler(ResultSet rs) throws SQLException {				if (rs.next()) 					space.setTimeStr(rs.getTimestamp(1).toLocaleString());					}		},conn);		Hibernate.initialize(space.getUser());  //初始化一定不要忘记(JDBC与hibernate融合时)		Hibernate.initialize(space.getTalk());  //初始化一定不要忘记(JDBC与hibernate融合时)		if(isCommited){			trans.commit();			session.close();		}		return space;	}//--------------------------------------------------------------------------------------------------------	//向主题回复帖子	public boolean addSpace(User user,Talk talk,String spaceContent){				Space space=new Space();		space.setUser(user);		space.setTalk(talk);		space.setSpaceContent(spaceContent);				Session session = getSession();		Transaction trans = session.beginTransaction();		try{			session.save(space);			trans.commit();			session.close();			return true;		}catch(Exception e){			//trans.rollback();			return false;		}	}//---------------------------------------------------------------------------------------------------------	//分页功能   talkid:针对某一主题的回帖的分页显示	public List<Space> getSpace(int pageCount,int count,String orderKey,String orderType,final Long talkid){		Session session=getSession();		Transaction trans=session.beginTransaction();		String sql="select id from zhao_space_tbl where talkid=? order by "+orderKey+" "+orderType;		//存放回帖		final List<Space> list=new ArrayList<Space>();		Connection conn=session.connection();		JDBCTemplate temp=new JDBCTemplate();		temp.query(sql,new PreparedStatementSetter(){			public void setter(PreparedStatement pstmt)throws SQLException{				pstmt.setLong(1,talkid);			}		},new Handler(){			public void handler(ResultSet rs) throws SQLException {				while(rs.next()){				list.add(getSpace(rs.getLong(1),false));				}			}		},conn);						trans.commit();		session.close();		int last=list.size();		if(pageCount*count<list.size())			last=pageCount*count;		return list.subList(count*(pageCount-1),last);	}	public List<Space> getSpace(int pageCount){		return getSpace(pageCount,10,"timestr","asc",10L);	}	public List<Space> getSpace(int pageCount,Long talkid){		return getSpace(pageCount,10,"timestr","asc",talkid);	}//---------------------------------------以下为测试用代码--------------------------------------------------------------		public static void main(String[] args) {		User user=new User();		user.setId(new Long(32));		Talk talk=new Talk();		talk.setId(new Long(50));		SpaceService service=new SpaceService();		//service.add(user, "站内公告","文明发帖",true);		//service.add(user, "如何过春节","在家",false);		//service.add(user, "如何找个好工作","不知道呀",false);		//service.add(user, "北京发大水了","好惨纳",false);		//service.add(user, "中国人必看","支持!!",false);		//service.add(user, "aa","11",false);		//service.add(user, "bb","22",true);		//service.add(user, "cc","33",false);		//service.add(user, "dd","44",false);		//service.add(user, "ee","55",false);		//service.add(user, "ff","66",false);			service.add(user, "gg","77",true);			service.add(user, "hh","88",false);			service.add(user, "ii","99",false);			service.add(user, "ii","110",false);		//System.out.println(service.add(user, "主题","主题内容kjkjjkkjk",false));		//System.out.println(service.getTalk(new Long(50),true));						//service.addSpace(user, talk, "yyyyyyyyyyy");		//for(Space space:service.getSpace(1,new Long(50))){		//	System.out.println(talk);		//}	}}

⌨️ 快捷键说明

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