hibernate预编译SQL语句中的setParameter和setParameterList

预编译SQL语句通过占位符避免了字符串拼接带来的复杂性和潜在错误,提高了代码可读性和性能。Hibernate提供了setParameter和setParameterList方法来替换JDBC中的占位参数。其中,setParameterList在处理'in'查询时更为便捷,体现了Hibernate API的良好设计,为开发者提供了更多选择。
摘要由CSDN通过智能技术生成

使用预编译SQL语句和占位符参数(在jdbc中是?),能够避免因为使用字符串拼接sql语句带来的复杂性。我们先来简单的看下,使用预编译SQL语句的好处。使用String sql = "select * from Student where name=" + name;如果name的值是1或 "aty"或"aty'aty",就会产生下面错误的sql

--ORA-01722 invalid number
select * from student where name=1;

--ORA-00904 invalid identifier
select * from student where name=aty;

--ORA-01756: quoted string not properly terminated
select * from student where name=aty'aty;

在构造sql的时候,使如果用了字符串拼接,就必须考虑数据类型,是否需要加单引号等细节问题,稍微不注意,就会导致错误sql语句。当拼接字符串很多的时候,代码几乎不可读,定位问题也十分困难。这是预编译sql在代码可读性和简单性上的优势。还有就是性能上的优势,可以参考我的另一篇博文:HQL或SQL使用?带来的好处:减少SQL解析时间、降低内存开销、防止SQL注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值