hibernate防止sql注入对参数赋值传参数的例子
来源于:https://my.oschina.net/u/1754093/blog/707083
1、按参数名称绑定
在HQL语句中定义命名参数要用”:”开头,形式如下:
Query query=session.createQuery(“from User user where user.name=:customername and user:customerage=:age ”);
query.setString(“customername”,name);
query.setInteger(“customerage”,age);
上 面代码中用:customername和:customerage分别定义了命名参数customername和customerage,然后用 Query接口的setXXX()方法设定名参数值,setXXX()方法包含两个参数,分别是命名参数名称和命名参数实际值。
2、 按参数位置邦定
在HQL查询语句中用”?”来定义参数位置,形式如下:
Query query=session.createQuery(“from User user where user.name=? and user.age =? ”);
query.setString(0,name);
query.setInteger(1,age);
同样使用setXXX()方法设定绑定参数,只不过这时setXXX()方法的第一个参数代表绑定参数在HQL语句中出现的位置编号(由0开始编号),第二个参数仍然代表参数实际值。
注:在实际开发中,提倡使用按名称邦定命名参数,因为这不但可以提供非常好的程序可读性,而且也提高了程序的易维护性,因为当查询参数的位置发生改变时,按名称邦定名参数的方式中是不需要调整程序代码的。
3、setParameter()方法
在Hibernate的HQL查询中可以通过setParameter()方法绑定任意类型的参数,如下代码:
String hql=”from User user where user.name=:customername ”;
Query query=session.createQuery(hql);
query.setParameter(“customername”,name,Hibernate.STRING);
如上面代码所示,setParameter()方法包含三个参数,分别是命名参数名称,命名参数实际值,以及命名参数映射类型。对于某些参数类型 setParameter()方法可以更具参数值的Java类型,猜测出对应的映射类型,因此这时不需要显示写出映射类型,像上面的例子,可以直接这样 写:
query.setParameter(“customername”,name);但是对于一些类型就必须写明映射类型,比如 java.util.Date类型,因为它会对应Hibernate的多种映射类型,比如Hibernate.DATA或者 Hibernate.TIMESTAMP。
4、setProperties()方法
在Hibernate中可以使用setProperties()方法,将命名参数与一个对象的属性值绑定在一起,如下程序代码:
Customer customer=new Customer();
customer.setName(“pansl”);
customer.setAge(80);
Query query=session.createQuery(“from Customer c where c.name=:name and c.age=:age ”); query.setProperties(customer);
setProperties()方法会自动将customer对象实例的属性值匹配到命名参数上,但是要求命名参数名称必须要与实体对象相应的属性同名。
这里还有一个特殊的setEntity()方法,它会把命名参数与一个持久化对象相关联,如下面代码所示:
Customer customer=(Customer)session.load(Customer.class,”1”);
Query query=session.createQuery(“from Order order where order.customer=:customer ”);
query. setEntity(“customer”,customer);
List list=query.list();
hibernate防止sql注入对参数赋值传参数的例子相关推荐
- 强大的PHP防SQL注入类,可以过滤敏感参数
这是一个考虑比较全面的php和sql结合的防注入程序,在php方便主要对get,post,cooke,files进行了过滤,在sql中我们就对delete,update一些查询命令进行检测过滤. SQ ...
- 本地搭建靶站进行漏洞复现和防御(SQL注入、文件上传、XSS漏洞的多种形式)
目录 注册登录模块 源码 测试 源码加固 文件上传模块 源码 测试 源码加固 发布动态模块 源码 测试 源码加固 本地搭建靶站进行测试,旨在提高自己的开发能力以及对漏洞的理解. 源码:利用PHP开发具 ...
- CTF学习(二)——信息泄露、密码口令、SQL注入、文件上传
一.信息泄露 1.1目录遍历 ①点开题目后依次点开各目录,遍历后发现flag文件得旗 1.2 PHPINFO ①在长篇文件中查找flag得旗 1.3备份文件下载 1.3.1 网站源码 ①由提示下载文件 ...
- [ctf web]基于多线程的sql注入的fuzz测试过滤参数模板
import requests import threading import math def burp(threads,url): #把测试sql关键字传入text列表with open(r&qu ...
- c语言的指针和java引用传递参数,java传参数是传值还是引用
1.基参数是本数据类型 传递是值(或者说值得副本). 2.参数是对象的话传递的是对象引用的副本.(1.修改引用副本指向新对象不会影响原来对象,2.修改引用指向的对象的属性会修改成功,3.如果传递时st ...
- mybatis中如何防止sql注入和传参
环境 使用mysql,数据库名为test,含有1表名为users,users内数据如下 JDBC下的SQL注入 在JDBC下有两种方法执行SQL语句,分别是Statement和PrepareState ...
- 防止sql拼接的Java方法,java程序防止sql注入的方法
12306刚爆出sql注入的漏洞(http://hyfw.12306.cn/hyinfo/action/ClcscxAction_index?cllx=G这个页面,自重输入1'),之前一些关于sql注 ...
- DataWorks功能实践速览 — 参数透传
简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! 往期回顾: DataWorks 功能实践速览01期--数据同步解决方案:为您介绍不同场景下可选的数据同步 ...
- java 最新sql注入原因以及预防方案(易理解)
前沿 在现有的框架中sql防注入已经做得很好了,我们需要做的就是尽量不要使用sql拼接调用 java sql注入原因以及预防方案(易理解) 1. SQL注入 1.1 原理 SQL注入是通过客户端的输入 ...
最新文章
- 4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区
- python done()什么意思_Python done
- Ubuntu下打开rar乱码问题的解决方法
- numpy---one
- 牛客假日团队赛10 L	乘积最大 (dp,大数)
- DOCKER windows 安装Tomcat内容
- 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
- IBM 2nm芯片弯道超车了?他连车都没有
- mysqlbinlog unknown variable:default-character-set=gbk
- timequest静态时序分析学习笔记之命令约束
- 通俗易懂的信息熵与信息增益(IE, Information Entropy; IG, Information Gain)
- Java项目:外卖订餐管理系统(java+SSM+JSP+jQuery+Ajax+mysql)
- 前端——面试(苏小妍)
- HMI-29-【运动模式】转速表实现及中心油耗仪表实现
- 高仿QQ发送语音界面
- TI官网注册账号一直卡人机识别问题
- python mitmproxy +雷电模拟器 安装
- JS实现抖音小姐姐表白源码
- 走进MySQL---分享dept、emp、bonus、salgrade员工信息管理表
- [011量化交易] python根据收盘价计算涨跌百分比
热门文章
- group by 和 left join 哪个慢_手机自带内存和扩展内存一样吗?哪个更好?
- 服务器每秒钟执行命令数量是什么_全国自考互联网及其应用模拟试卷(一)及答案.doc...
- python 残差图_python 残差图
- linux web文件夹权限设置,WEB文件目录权限设置与修改方法
- .net 怎么在控制器action中返回一个试图_一个view事件分发,面试官6连问直击灵魂,我被虐的体无完肤...
- button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例
- (二) shiro入门 :输出 hello world
- JAVA就业面试题之单例模式
- 将一个数字划分成树状
- 【Nutch2.2.1源代码分析之5】索引的基本流程