Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

HQL语句的动态赋值

来源: bhw1015 分享至:

HQL语句的动态赋值

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

"?"号代表参数

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

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

自定义参数名称

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

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

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史