首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

HQL话语的动态赋值

2012-06-27 
HQL语句的动态赋值HQL语句的动态赋值在JDBC编程中,PreparedStatement对象为开发提供了方便,它不但可为SQL

HQL语句的动态赋值

HQL语句的动态赋值

在JDBC编程中,PreparedStatement对象为开发提供了方便,它不但可为SQL语句进行动态赋值,而且可以避免SQL的注入式攻击;此外,由于它使用了SQL的缓存技术,还可以提高SQL语句的执行效率。在HQL查询语言中,也提供了类似的方法,其实现方式主要有两种。

"?"号代表参数

此种方式与PreparedStatement极其相似,通过Query对象的setParameter()方法进行赋值,在HQL语句中以"?"号代表参数。如查询id为3的User对象,可以使用以下方法。

  1. //HQL语句 ?String?hql?=?"from?User?u?where?u.id?=??";?? ?
  2. //创建Query对象 ?Query?query?=?session.createQuery(hql); ?
  3. //HQL参数赋值 ?query?=?query.setParameter(0,?3); ?
  4. //获取查询结果集 ?list?=?query.list();?

自定义参数名称

此种方式也通过Query对象的setParameter()方法进行赋值,但HQL语句中的参数可以自定义,它通过":"号与自定义参数名组合的方法实现。如查询id为3的User对象,可以使用以下方法。

  1. //HQL语句 ?String?hql?=?"from?User?u?where?u.id?=?:userId"; ?
  2. //创建Query对象 ?Query?query?=?session.createQuery(hql); ?
  3. //HQL参数赋值 ?query?=?query.setParameter("userId",?3); ?
  4. //获取查询结果集 ?list?=?query.list();?

热点排行