Hibernate中HQL语句写法

来源:互联网 时间:1970-01-01

 

最开始项目中HQL语句写的比较随意,后来看了下Hibernate 中Query和Criteria API,和sql语句的编译过程 。了解到查询条件不要直接使用字符串拼接,可以大大提高sql语句执行效率,代码也更加规范安全。

query 的基本写法:

使用“=:xx” 标识变量

setString("xx", ....)   插入对应的搜索条件

 

public String DocSerialNo(String perType, String organId) { String updateHql = "update LicenceSerialNo set curnum=curnum+1 where curareaid=:organId and areaid=:perType"; Query qr=this.getSession().createQuery(updateHql); qr.setString("organId", organId); qr.setString("perType", perType); int i=qr.executeUpdate(); if(i<1)return null; String findSerialHql="from LicenceSerialNo where curareaid=:organId and areaid=:perType"; Query findQr=this.getSession().createQuery(findSerialHql); findQr.setString("organId", organId); findQr.setString("perType", perType); LicenceSerialNo licSerial=(LicenceSerialNo) findQr.list().get(0); String licNo=licSerial.getLicencetype()+new DecimalFormat("0000").format(licSerial.getCurnum()); return licNo; }

 

criterial 使用:

cr.add()   在sql语句后拼接查询限制条件

Restrictions类提供了查询限制机制。它提供了许多方法,以实现查询限制.

Criteria cr = session.createCriteria(Student.class); //生成一个Criteria对象cr.add(Restrictions.eq("name", "Bill"));//等价于where name=’Bill’List list = cr.list();Student stu = (Student)list.get(0);System.out.println(stu.getName());

 

 

相关阅读:
Top