HibernateTemplate方法的使用
1、查询帖子(Post)为例
查找所有的帖子
public List<Post> findPosts() { String hql = "from Post p left join fetch p.user"; List<Post> list= null; list = (List<Post>) this.ht.find(hql); return list; }
@Transactional(propagation=Propagation.REQUIRED) public List<Post> findPosts2() { List<Post> list= null; DetachedCriteria dc = DetachedCriteria.forClass(Post.class); list = (List<Post>) this.ht.findByCriteria(dc); return list; }
@Transactional(propagation=Propagation.REQUIRED) public List<Post> findPosts3() { List<Post> list= null; list = (List<Post>) this.ht.findByExample(new Post()); return list; }
特定条件查询
@Transactional(propagation= Propagation.REQUIRED) public List<Post> findPostByUser(String userid) { String hql = "from Post p where p.user.userid = :userid"; List<Post> list= null; try{ list = (List<Post>) this.ht.findByNamedParam(hql, "userid",userid);//list = (List<Post>) this.ht.findByNamedParam(hql, new String[]{"userid"},new String[]{userid})
}catch(Exception e){ e.printStackTrace(); } return list; }
分页查询
@Transactional(propagation=Propagation.REQUIRED) public List<Post> findPosts(int start,int limit) { String hql = "from Post p left join fetch p.user"; List<Post> list= null; DetachedCriteria dc = DetachedCriteria.forClass(Post.class); list = (List<Post>) this.ht.findByCriteria(dc, start, limit);//this.ht.findByExample(new Post(), start, limit); return list; }
原生的sql查询(返回的是object数组)
@Transactional(propagation=Propagation.REQUIRED) public List<Post> findPosts4() { String sql = "select * from post"; List<Post> list= null; list = (List<Post>) this.ht.getSessionFactory().getCurrentSession().createSQLQuery(sql).list(); return list; }