上下移动

本文介绍了一种在论坛系统中实现帖子排序及上下移动功能的方法。通过在论坛对象中增加一个表示位置的属性position,并利用Hibernate进行数据库操作,实现了帖子的自动排序。此外,还提供了上移和下移功能,确保用户能够方便地调整帖子顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象中多一个属性 position 表示排序用的位置号,将所有对象按着升序存入数据库中

@Service
@Transactional
@SuppressWarnings("unchecked")
public class ForumServiceImpl extends DaoSupportImpl<Forum> implements ForumService {

	@Override
	public List<Forum> findAll() {
		return getSession().createQuery(//
				"FROM Forum f ORDER BY f.position")//
				.list();
	}
	
	@Override
	public void save(Forum forum) {
		//保存
		super.save(forum);
		//设置position的值
		forum.setPosition(forum.getId().intValue());
	}

	public void moveUp(Long id) {
		//找出相关的forum
		Forum forum = getById(id); //当前要移动的forun 
		Forum other = (Forum) getSession().createQuery(//
				"FROM Forum f WHERE f.position<? ORDER BY f.position DESC ")//
				.setParameter(0, forum.getPosition())//
				.setFirstResult(0)//
				.setMaxResults(1)//
				.uniqueResult() ;//我上面那个forum 
		
		//最上面的不能够上移
		if(other == null){
			return ;
		}
		
		//交换position 
		int temp = forum.getPosition() ;
		forum.setPosition(other.getPosition());
		other.setPosition(temp); 
		
		//更新到数据库中,可以自动更新到数据库中,因为对象现在是持久化状态
		getSession().update(forum);
		getSession().update(other); 
	}

	public void moveDown(Long id) {
		//找出相关的forum
		Forum forum = getById(id); //当前要移动的forun 
		Forum other = (Forum) getSession().createQuery(//
				"FROM Forum f WHERE f.position>? ORDER BY f.position ASC ")//
				.setParameter(0, forum.getPosition())//
				.setFirstResult(0)//
				.setMaxResults(1)//	
				.uniqueResult() ;//我上面那个forum 
		
		//最下面的不能够下移
		if(other == null){
			return ;
		}
		
		//交换position 
		int temp = forum.getPosition() ;
		forum.setPosition(other.getPosition());
		other.setPosition(temp); 
		
		//更新到数据库中,可以自动更新到数据库中,因为对象现在是持久化状态
		getSession().update(forum);
		getSession().update(other); 
		
	}
}


变灰显示,不可移动
					<!-- 最上面的不能上移 -->
					<s:if test="#status.first">
						<span class="disabled">上移</span>
					</s:if>
					<s:else>
						<s:a action="forumManage_moveUp?id=%{id}">上移</s:a>
					</s:else>
					
					<!-- 最下面的不能下移 -->
					<s:if test="#status.last">
						<span class="disabled">下移</span>
					</s:if>
					<s:else>
						<s:a action="forumManage_moveDown?id=%{id}">下移</s:a>
					</s:else>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值