package com.lst.lc.dao.impl; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.springframework.stereotype.Repository; import com.lst.lc.dao.QuestionDao; import com.lst.lc.entities.Question; import com.lst.lc.utils.DateUtils; /** * @author innerac * */ @Repository("questionDao") public class QuestionDaoImpl extends BaseDao implements QuestionDao { @Override public void addQuestion(Question question) { save(question); } @Override public void updateQuestion(Question question) { update(question); } @Override public Question getQuestion(int questionId) { return get(Question.class, questionId); } @Override public void update(int questionId, String title, String tag, String content) { String hql = "update Question as question set question.title = ?, question.content = ?, question.tag = ? where question.questionId = ?"; Query query = query(hql); query.setString(0, title).setString(1, content).setString(2, tag) .setInteger(3, questionId).executeUpdate(); } @Override public List<Question> getTopFiveRecently(int id) { Date end = DateUtils.getDateBefore(new Date(), 40); String hql = "from Question as question where question.time > ? and question.questionId != ? order by question.readNums*0.2+question.answerNums*0.8 desc"; Query query = query(hql); query.setDate(0, end).setInteger(1, id); query.setMaxResults(5); List<Question> lists = query.list(); return lists; } @Override public void addReadNums(int questionId) { String hql = "update Question as question set question.readNums = question.readNums + 1 where question.questionId = ?"; Query query = query(hql).setInteger(0, questionId); query.executeUpdate(); } @Override public List<Question> search(String key) { String hql = "from Question as question where question.title like ?"; Query query = query(hql).setString(0, "%" + key + "%"); return query.list(); } @Override public List<Question> getQuestionOfUser(int userId) { String hql = "from Question as question where question.user.userId = ? order by question.time desc"; Query query = query(hql); query.setInteger(0, userId); return query.list(); } @Override public void addAnswerNums(int questionId) { String hql = "update Question as question set question.answerNums = question.answerNums + 1 where question.questionId = ?"; Query query = query(hql).setInteger(0, questionId); query.executeUpdate(); } @Override public long count() { String hql = "select count(*) from Question"; Query query = query(hql); long res = (long) query.uniqueResult(); return res; } @Override public long userCount() { String hql = "select count(DISTINCT question.user) from Question as question"; Query query = query(hql); long res = (long) query.uniqueResult(); return res; } }