Hibernate的2种查询及分页

很久都没有使用hibernate做开发了,好多东西都有点生疏了。今天忽然想到了顺便自己就复习了一下,觉得hibernate还是很方便的至少他提供了统一的分页。开发就不会为换了数据库而去修改大量的代码了。

hibernate的查询有这么2种,一种是hql查询,Criteria查询。2种我觉得使用起来都比较方便

1.hql的带参数查询有一个小小的技巧,可以不用索引的方式

Query q=session.createQuery("update StudentInfo set username=? where fid=?"); 

            q.setString(0"刘若英"); 

            q.setInteger(13); 

上面的这个是原始的写法,还有一种更好使的就是把问号的地方换成    :参数的名称  ,这样就不用怕记错顺序了。

Query q=session.createQuery("update StudentInfo set username=:username where fid=:fid"); 

            q.setString("username""刘若英"); 

            q.setInteger("fid"3); 

2.使用Criteria查询数据,这种方式不需要写hql语句,个人觉得简单的使用这种方法也是足够了。Restrictions带有很多的查询条件如or,in都有相应支持

public void otherQuery() { 

        Session session = null

        Transaction tra = null

        // 通过工具类取得session  

        try { 

            session = HibernateUtil.getSession(); 

            tra = session.beginTransaction(); 

            Criteria c=session.createCriteria(StudentInfo.class); 

            //c.add(Restrictions.eq("username", "潘玮柏"));  

                        c.add(Restrictions.or(Restrictions.lt("fid"5))); 

                        //从第一条开始查询  

                        c.setFirstResult(0); 

                        //每次查询10条数据  

                        c.setMaxResults(10); 

            List<StudentInfo> all = c.list(); 

            //查询单条数据  

            //StudentInfo info=(StudentInfo)c.uniqueResult();  

            for (StudentInfo studentInfo : all) { 

                System.out.println("姓名:"+studentInfo.getUsername()); 

            } 

            tra.commit(); 

 

        } catch (HibernateException e) { 

            // TODO Auto-generated catch block  

            e.printStackTrace(); 

        } finally { 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a86efb4c216c239b0616be2c6be187d1.html