站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
HQL
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
===参数绑定=== Hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统[[JDBC]]编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的参数绑定: <pre> PrepareStatementpre=connection.prepare(“select*fromUserwhereuser.name=?”); pre.setString(1,”zhaoxin”); ResultSetrs=pre.executeQuery(); </pre> 在Hibernate中也提供了类似这种的查询参数绑定功能,而且在Hibernate中对这个功能还提供了比传统JDBC操作丰富的多的特性,在Hibernate中共存在4种参数绑定的方式,下面我们将分别介绍: *按参数名称绑定: 在HQL语句中定义命名参数要用”:”开头,形式如下: <pre> Queryquery=session.createQuery(“fromUseruserwhereuser.name=:customernameanduser:customerage=:age”); query.setString(“customername”,name); query.setInteger(“customerage”,age); </pre> 上面代码中用:customername和:customerage分别定义了命名参数customername和customerage,然后用Query接口的setXXX()方法设定名参数值,setXXX()方法包含两个参数,分别是命名参数名称和命名参数实际值。 *按参数位置邦定: 在HQL查询语句中用”?”来定义参数位置,形式如下: <pre> Queryquery=session.createQuery(“fromUseruserwhereuser.name=?anduser.age=?”); query.setString(0,name); query.setInteger(1,age); </pre> 同样使用setXXX()方法设定绑定参数,只不过这时setXXX()方法的第一个参数代表邦定参数在HQL语句中出现的位置编号(由0开始编号),第二个参数仍然代表参数实际值。 *setParameter()方法: 在Hibernate的HQL查询中可以通过setParameter()方法邦定任意类型的参数,如下代码: <pre> Stringhql=”fromUseruserwhereuser.name=:customername”; Queryquery=session.createQuery(hql); query.setParameter(“customername”,name,Hibernate.STRING); </pre> 如上面代码所示,setParameter()方法包含三个参数,分别是命名参数名称,命名参数实际值,以及命名参数映射类型。对于某些参数类型setParameter()方法可以更具参数值的Java类型,猜测出对应的[[映射]]类型,因此这时不需要显示写出映射类型,像上面的例子,可以直接这样写: query.setParameter(“customername”,name);但是对于一些类型就必须写明映射类型,比如java.util.Date类型,因为它会对应Hibernate的多种映射类型,比如Hibernate.DATA或者Hibernate.TIMESTAMP。 *setProperties()方法: 在Hibernate中可以使用setProperties()方法,将命名参数与一个对象的属性值绑定在一起,如下程序代码: <pre> Customercustomer=newCustomer(); customer.setName(“pansl”); customer.setAge(80); Queryquery=session.createQuery(“fromCustomercwherec.name=:nameandc.age=:age”); query.setProperties(customer); </pre> setProperties()方法会自动将customer对象实例的属性值匹配到命名参数上,但是要求命名参数名称必须要与实体对象相应的属性同名。 还有一个特殊的setEntity()方法,它会把命名参数与一个持久化对象相关联,如下面代码所示: <pre> Customercustomer=(Customer)session.load(Customer.class,”1”); Queryquery=session.createQuery(“fromOrderorderwhereorder.customer=:customer”); query.setProperties(“customer”,customer); Listlist=query.list(); </pre> 上面的代码会生成类似如下的SQL语句: Select*fromorderwherecustomer_ID=’1’; *使用绑定参数的优势: ①、可以利用数据库实施性能优化,因为对Hibernate来说在底层使用的是PrepareStatement来完成查询,因此对于语法相同参数不同的SQL语句,可以充分利用预编译SQL语句缓存,从而提升查询效率。 ②、可以防止SQLInjection安全漏洞的产生
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)