很久都没有使用hibernate做开发了,好多东西都有点生疏了。今天忽然想到了顺便自己就复习了一下,觉得hibernate还是很方便的至少他提供了统一的分页。开发就不会为换了数据库而去修改大量的代码了。
hibernate的查询有这么2种,一种是hql查询,Criteria查询。2种我觉得使用起来都比较方便
1.hql的带参数查询有一个小小的技巧,可以不用索引的方式
Query q=session.createQuery("update StudentInfo set username=? where fid=?");
q.setString(0, "刘若英");
q.setInteger(1, 3);
上面的这个是原始的写法,还有一种更好使的就是把问号的地方换成 :参数的名称 ,这样就不用怕记错顺序了。
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 {