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;
    }
        
原文地址:https://www.cnblogs.com/Wen-yu-jing/p/4118505.html