HQL 变量 过滤案例

Posted

技术标签:

【中文标题】HQL 变量 过滤案例【英文标题】:HQL variables Filter cases 【发布时间】:2018-09-02 14:01:53 【问题描述】:

如何更新我的代码以接受过滤器 HQL 4 变量过滤案例 让 x , y , z ;



select data from my table  
where   x = :x And y = :y And z =:z

if send x , y , z is NULL > 

select data from my table



如何编辑这个

或发送 x , y NULL


select data from my table  
where   x = :x And y = :y  

总结:如何做动态选择花蕊。 采用 : 1.弹簧靴 2.JPA 3.休眠 3.HQL

【问题讨论】:

【参考方案1】:

这是一个你可以使用的技巧:

SELECT data
FROM my_table
WHERE (:x IS NULL OR x = :x)
  AND (:y IS NULL OR y = :y)
  AND (:z IS NULL OR z = :z)

注意检查::x IS NULL会检查传入的参数值是否为空。

例如,如果您有这种情况:

X       Y          Z
null    not null   not null

您的查询相当于:

SELECT data FROM my_table WHERE AND y = :y AND z = :z

X 的检查被忽略。

【讨论】:

为空,怎么办?? 如果 x = null : 从 my_table 中选择数据 WHERE (:y IS NULL OR y = :y) AND (:z IS NULL OR z = :z) 这样做??? @hOS 然后 x 将被忽略,例如 x 为 null 而 y 和 z 不是,那么您的查询相当于SELECT data FROM my_table WHERE AND y = :y AND z = :z

以上是关于HQL 变量 过滤案例的主要内容,如果未能解决你的问题,请参考以下文章

hive---hql---案例04

hive----hql案例

COBOL--03--案例2cobol转hql

COBOL--03--案例2cobol转hql

spark中使用sparksql对日志进行分析(属于小案例)

JavaEE---过滤器Filter ,过滤器Filter的实现与部署,编码案例+权限案例