package com.lst.lc.dao.impl; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.springframework.stereotype.Repository; import com.lst.lc.dao.BlogDao; import com.lst.lc.entities.Blog; import com.lst.lc.entities.Question; import com.lst.lc.utils.DateUtils; /** * @author innerac * */ @Repository("blogDao") public class BlogDaoImpl extends BaseDao implements BlogDao { @Override public void addBlog(Blog blog) { save(blog); } @Override public void updateBlog(Blog blog) { update(blog); } @Override public Blog getBlog(int blogId) { return get(Blog.class, blogId); } @Override public void deleteBlog(int blogId) { String hql = "delete Blog as blog where blog.blogId = ?"; Query query = query(hql); query.setInteger(0, blogId); query.executeUpdate(); } @Override public List<Blog> getBlogsOfUser(int userId) { String hql = "from Blog as blog where blog.user.userId = ? order by blog.time desc"; Query query = query(hql); query.setInteger(0, userId); return query.list(); } @Override public List<Blog> getTopFiveRecently() { Date end = DateUtils.getDateBefore(new Date(), 7); String hql = "from Blog as blog where blog.time > ? order by blog.readNums*0.2+blog.answerNums*0.8 desc"; Query query = query(hql); query.setDate(0, end); query.setMaxResults(5); List<Blog> lists = query.list(); return lists; } @Override public void addReadNums(int blogId) { String hql = "update Blog as blog set blog.readNums = blog.readNums + 1 where blog.blogId = ?"; Query query = query(hql).setInteger(0, blogId); query.executeUpdate(); } @Override public List<Blog> getOtherBlogs(int userId, int blogId) { String hql = "from Blog as blog where blog.user.userId = ? and blog.blogId <> ?"; Query query = query(hql).setInteger(0, userId).setInteger(1, blogId).setMaxResults(5); return query.list(); } @Override public List<Blog> search(String key) { String hql = "from Blog as blog where blog.title like ?"; Query query = query(hql).setString(0, "%" + key + "%"); return query.list(); } @Override public void addCommentNums(int blogId) { String hql = "update Blog as blog set blog.commentNums = blog.commentNums + 1 where blog.blogId = ?"; Query query = query(hql).setInteger(0, blogId); query.executeUpdate(); } @Override public long count() { String hql = "select count(*) from Blog"; Query query = query(hql); long res = (long) query.uniqueResult(); return res; } @Override public long userCount() { String hql = "select count(DISTINCT blog.user) from Blog as blog"; Query query = query(hql); long res = (long) query.uniqueResult(); return res; } }