Hibernate中HQL语句写法
2013-05-29 15:17
387 查看
最开始项目中HQL语句写的比较随意,后来看了下Hibernate 中Query和Criteria API,和sql语句的编译过程 。了解到查询条件不要直接使用字符串拼接,可以大大提高sql语句执行效率,代码也更加规范安全。
1,hql中可以用"?"来占位,在使用query时,必须将"?"及其索引位置和字段名对应上(很容易出错;不利于维护;)
2,hql另外一种方式占位:命名参数;
使用命名参数;冒号+字段名(或别名);等于给原来的"?"起了个名字;
String hql = "from User as user where user.name=:name";
//....
query.setString ("name", name); // 此处第一个参数必须和hql中参数命名一致;
query 的基本写法:
使用“=:xx” 标识变量
setString("xx", ....) 插入对应的搜索条件
query的set系列方法很多,不需要都记住,使用的时候查询即可,重点掌握有特色的方法,如,
query.setfirstResult(0); // 设置查询起始位置
query.setMaxResult(10); // 设置查询记录数
这两个方法可以实现分页;这种方法可以实现不依赖于数据库(低耦合);
在hibernate.cfg.xml中的name为"dialect"(方言)的property来判断是哪种数据库,以方便采用对应数据库的分页实现:
mysql就使用limit,Oracle就是用roll number;
query最常用的方法
query.list() query.uniqueResult() set系列
criterial 使用:
cr.add() 在sql语句后拼接查询限制条件
Restrictions类提供了查询限制机制。它提供了许多方法,以实现查询限制.
1,hql中可以用"?"来占位,在使用query时,必须将"?"及其索引位置和字段名对应上(很容易出错;不利于维护;)
2,hql另外一种方式占位:命名参数;
使用命名参数;冒号+字段名(或别名);等于给原来的"?"起了个名字;
String hql = "from User as user where user.name=:name";
//....
query.setString ("name", name); // 此处第一个参数必须和hql中参数命名一致;
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; }
query的set系列方法很多,不需要都记住,使用的时候查询即可,重点掌握有特色的方法,如,
query.setfirstResult(0); // 设置查询起始位置
query.setMaxResult(10); // 设置查询记录数
这两个方法可以实现分页;这种方法可以实现不依赖于数据库(低耦合);
在hibernate.cfg.xml中的name为"dialect"(方言)的property来判断是哪种数据库,以方便采用对应数据库的分页实现:
mysql就使用limit,Oracle就是用roll number;
query最常用的方法
query.list() query.uniqueResult() set系列
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());
相关文章推荐
- hibernate 写HQL语句返回多个对象的写法
- Hibernate中三表联结的HQL语句写法
- Hibernate的HQL查询及原生sql查询语句写法
- Hibernate 3 HQL语句in clause绑定参数的写法- -
- [Hibernate框架]Hql语句in中带参数的写法
- hibernate 直接执行hql语句的代码写法
- Hibernate 学习笔记:Hibernate 中 HQL 语句的用法
- Hibernate的hql常用语句整理汇总
- 使用hibernate构造hql语句时order by的妙用
- hibernate hql语句in的使用和占位符
- hibernate根据条件动态组装sql/hql语句(仿ibatis动态查询语句功
- 当hibernate的hql语句报错的应对方法
- Spring+hibernate hql语句经hibernet的转化后中文乱码
- hibernate的hql不能使用insert语句
- Hibernate对象状态、缓存、快照、hql语句、criteria语句、sql语句
- 自己写了个类来封装hibernate的hql语句的生成
- hibernate HQL语句
- hibernate的hql查询语句总结
- Hibernate中常用的HQL语句总结
- hibernate的hql查询语句总结