HQL语句的动态赋值

  • 1、“?”号代表参数
  • 2、自定义参数名称

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

1、“?”号代表参数

此种方式与PreparedStatement及其相似,通过Query对象的setParamenter()f方法进行赋值,在HQL语句中以“?”为参数。例如查询id为3的User对象,可以使用以下方法。

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

2、自定义参数名称

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

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

HQL语句的动态赋值相关推荐

  1. 三、通过session操作hibernate(hql语句)

    在没有将spring和hibernate整合在一起的时候,要使用hibernate,在持久层需要如下步骤: 一.在还没有对hibernate进行spring的整合的时候,我们需要写一个session工 ...

  2. mysql存储过程into_MySQL存储过程中使用SELECT …INTO语句为变量赋值

    使用SELECT -INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT -INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT -INTO语句 ...

  3. mysql(十)条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGINdeclare i int de ...

  4. hibernate 学习之——hql 语句

    hibernate 学习之--hql 语句 hibernatre hql 语句:是对于hibernate的orm模式的一种类似于JDBC语句的面对对象的操作语句 特点 : 1.对于类名属性名区分大小写 ...

  5. HQL语句的基本语法和使用

     HQL查询 Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ,因此 H ...

  6. mysql hql查询语句_使用Query进行HQL语句查询和SQL语句查询

    HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是&quo ...

  7. Hibernate查询技术之HQL语句

    1.session中的get( )和load( )方法来查询对象.但其查询功能有限. private void testGet(){//1.初始化,读取配置文件hibernate.cfg.xmlCon ...

  8. 简易HQL语句转换为可执行的SQL语句

    主要利用Hibernate中封装的一个转换器实现类:QueryTranslatorImpl, hql语句中无参数时,用下面的方法: /** * 将hql语句转换为sql语句,无参数 * * @para ...

  9. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

最新文章

  1. linux c 线程同步的三种方法
  2. 创建Maven源代码和Javadoc工件
  3. ExtJs2.0学习系列(13)--Ext.TreePanel之第二式
  4. Java校招笔试题-Java基础部分(四)
  5. Bootstrap3 面板 .panel 容器
  6. 用OpenCV制作一个低成本的立体相机
  7. error LNK2019: 无法解析的外部符号 ,该符号在函数 中被引用
  8. VMware vCenter Server安装与配置
  9. 论文阅读《Vision-Aided RAIM: A New Method for GPS Integrity Monitoring in Approach and Landing Phase》3
  10. 研究手机直播流媒体框架
  11. 2016——注定不平凡的一年
  12. 删除后别人的微信号变成wxid_重磅!只需三步修改微信号,不用设置出生日期...
  13. Roman Numeral Converter--将给定的数字转换为罗马数字
  14. mysql dbi dbd_安装DBI和DBD包
  15. 诺康得NKD完成500万天使轮融资,专注于糖化学细胞治疗
  16. 网站制作过程中需要注意的SEO知识
  17. hue集成hive详解
  18. Java自动生成二维码总结
  19. python 方差膨胀因子 检验_从零开始学Python【22】--线性回归诊断(第一部分)
  20. postgresql 的 base64 解密、解码

热门文章

  1. Java中Arrays工具类常用方法
  2. aop学习前奏之代理模式之静态代理
  3. 联想linux电脑开机黑屏怎么办,联想笔记本电脑开机黑屏怎么办 联想笔记本电脑开机黑屏的方法...
  4. ace.css模板,4.2 引入ACE主题的CSS样式
  5. 什么是html的事件冒泡,什么是事件冒泡?
  6. c语言指针的有关总结
  7. 通过国家码切换默认输入法
  8. 炫云3ds Max插件的非典型功能介绍
  9. 中国集体经济杂志中国集体经济杂志社中国集体经济编辑部2023年第6期目录
  10. 错误编号:C4496