`

hibernate的hql 中in的参数如何设置

阅读更多
我用hibernate写数据库查询的时候一般不建立表关联,一是表之间的关系通常比较复杂,各种关联,导致的性能比较低,二是因为hql比较灵活。所以批量更新的时候需要in关键字,我总结了一下两种

  1、in的参数如果已知了,可以直接拼接在后面 如FROM A WHERE A.ID IN (1,2,3,4...)。
   2、上面的情况下,通常(1,2,3,4...)都是作为参数传递过来的,可能是数组或者List。
    假设List<Integer> a;a里面已经有数据了,则HQL查询条件可以为:   
String hql="FROM A WHERE A.ID IN (:ids)";  
Query query = getSession().createQuery(hql);  
query.setParameterList("ids", a); 
   


之前采用第二种的方式时候走过一些弯路,就是我写成了如下样子
String hql="FROM A WHERE A.ID IN (?)";  
Query query = getSession().createQuery(hql);  
query.setParameter(0, a); 

这种?的情况下直接替换了,就变为in("3,4,5")...
而采用文章中形式和in正确方法是in("3","4","5")
分享到:
评论

相关推荐

    Hibernate框架]Hql语句in中带参数的写法

    Hibernate框架]Hql语句in中带参数的写法

    Hibernate HQL教程

    hibernate HQL详细教程,简单易学易懂 1.1 HQL基础 2 1.1.1 默认数据库表和数据 2 1.1.2 检索类的所有对象 4 1.1.3 检索类的某几个属性 5 1.1.4 指定别名 5 1.1.5 where条件子句 5 1.1.6 使用distinct过滤掉重复值 6...

    Hibernate_二级缓存总结

    缓存可以简单的看成一个 Map ,通过 key 在缓存里面找 ...对于查询缓存来说,缓存的 key 是根据 hql 生成的 sql ,再加上参数,分页等信息(可以通过日志输出看到,不过它的输出不是很可读,最好改一下它的代码)。

    Hibernate注释大全收藏

    • Single Table per Class Hierarchy Strategy: the &lt;subclass&gt; element in Hibernate 每个类层次结构一张表 • Joined Subclass Strategy: the &lt;joined-subclass&gt; element in Hibernate 连接的子类策略 @...

    idea-mini-ibatis.jar

    iBATIS和其他持久化框架,如Hibernate之间的显著区别在于,iBATIS强调使用SQL,而其他的框架通常使用一个自定义的查询语言,具有Hibernate查询语言(HQL)或Enterprise JavaBeans的查询语言(EJB QL)。

    ARCH4系统开发指南

    2.9 如何清除Hibernate Session中的对象 22 2.10 使用日期控件 22 2.11 如何引入外部文件 23 2.11.1 主页面采用include方式,引入各个子页面jsp文件 23 2.11.2 主页面用${ctx}方式,引入超链接或资源文件等。 23 ...

    支持多数据库的ORM框架ef-orm.zip

    开发过程中参照了Hibernate Shards、Alibaba TDDL、Cobar等框架,也是基于词法分析器来提取SQL参数,并计算路由。 能支持分库维度含糊等场景下的分库分表。以及包括多库多表下的 order by , distinct, group by, ...

Global site tag (gtag.js) - Google Analytics