sql/hql 手册
一、hql 为什么要用 where 1=1 ?
1=1 是永恒成立的,意思是无条件的,也就是在 hql/sql 语句中可有可无。
这个1=1通常用于用户需要选择条件时使用(拼凑where)。
例如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,hql/sql查询也不会出错。如果用户选择了姓名,那么where变成了where 1=1 and 姓名=“用户输入的姓名”,如果还选择了其他的条件,就不断在where 条件后追加 and语句就行了。如果不用1=1的话,每加一个条件,都要判断前面有没有where 条件,如果没有就写where ...,有就写and语句,因此此时用1=1可以简化了应用程序的复杂度。
有了where 1 = 1 自然有 where 1 = 0 啦, where 1 = 0 的意思是,这条错了,后面什么的都无所谓了,这样可以返回这个表的结构,但是里面没有任何内容。我们需要看表结构的时候就这样用。
二、如何理解 '=:变量名'?
防止sql注入,提高性能。
(1)未防止sql注入的情况下,通常在sql语句组装的时候,不会直接传入值。通过 "=:变量名" 的方式,在具体调用的时候传入参数,是防止sql注入的写法。
(2)这里的 "变量名" 是不需要定义的临时变量。

浙公网安备 33010602011771号