- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hql 参数绑定 笔记(HQL parameter binding note)
hql 参数绑定 笔记(HQL parameter binding note)
: jdbc 中:
preparestatement pre = connection.prepare (select * from users where =? );
pre.setstring (1, zhaoxin);
resultset rs = pre.executequery ();
: 如果在 hibernate 中 调用 jdbc:
session.begintransaction trans = ().
connection conn = session.connection ();
preparedstatement stmt = conn.preparestatement (sql);
stmt.executeupdate ();
stmt.execute ();
mit ();
hibernate 中:
to): 按照参数名称绑定: / / 可以级联的去写
query query = session.createquery (from user u where = username);
query.setstring (username, 秦强强); / / (命名参数名称, 命名参数实际的值)
/ /: username 定义了命名参数, 相当于 =? , 然后设置? 的值 / /
(b) 按照参数位置绑定: / / 不提倡 可读性差
query query = session.createquery (from user user where =? and user.age =? );
query.setstring (0, name); / / 按照? 的 位置设置实际的参数
query.setinteger (1, 3).
(c): setparameter () 方法: / / 可以绑定任意类型的参数 / / 推荐
string hql = from user user where = username;
query query = session.createquery (hql);
query.setparameter (customername name, hibernate.string);
/ / 命名参数名称, 命名参数实际值, 命名参数映射类型.
/ / 对于一些基本类型, hibernate 可以猜测出参数映射类型, 但是date类型不可以.
/ / 应为它会对应hibernate的多种映射类型, 像是 hibernate.date, hibernate.timestamp
(d): setproperties () (注意 ies 复数} 方法: / / setentity (); 将命名参数的值和一个对象的属性值绑定
customer customer = new customer ();
customer.setname (pansl);
customer.setage (80).
query query = session.createquery (from customer c where =: 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);
The query. Setentity (customer, customer);
List list = query.list ();
上面的代码会生成类似如下的sql语句:
Select * from order where customer _ id = 1;
(E): 参数绑定的好处;
1: 用好有可读性;
2: 对于语法相同, 参数不同的 SQL 语句, 可以利用预编译的sql语句缓存, 提高性能;
3: 会将 单引号? 解析? ?
SQL injection是一种专门针对sql语句拼装的攻击方式, 比如对于我们常见的用户登录,
在登录界面上, 用户输入用户名和口令, 这时登录验证程序可能会生成如下的hql语
您可能关注的文档
- 2010武科大城市学院中国建筑史答案txt(2010 City College of Wuhan University of science and technology the answer Chinese architectural history TXT).doc
- 2010湖南会计从业资格考试《基础会计》试题(2010 Hunan accounting qualification examination basic accounting examination questions).doc
- 2010年一级建造师《机电工程管理与实务》考试大纲(First grade construction engineer, mechanical and electrical engineering management and practice examination outline in 2010).doc
- 2010年全县病虫草害防治预案(2010 County pest control plan).doc
- 2010物业管理师试卷--综合能力真题(2010 property management division papers -- comprehensive ability test).doc
- 2010申论之巨变(On the 2010 changes).doc
- 2010电大管理学形成性考核册作业答案(2010, TV university management examination book operation answers).doc
- 2010病句考析(2010 error analysis).doc
- 2010西安到至张家界自驾游路书自助游攻略及交通方式(2010 Xi'an to Zhangjiajie travel team travel and transportation car).doc
- 2010高三英语复习指导意见(2010 Senior English review guidance).doc
文档评论(0)