您的位置:首页 > 数据库 > MySQL

hibernate hql语句in的使用和占位符

2016-08-08 14:40 363 查看
平时经常用Hibernate,由于习惯表间不建立关联,所以HQL查询时候经常要用in语句。

    我最常用的情况有2种:

   1、in后是个子查询,如 FROM A WHERE A.ID IN (SELECT B.AID FROM B WHERE ...),这样是没问题的,如果A.ID 和B.AID是相同的数据类型。

   2、in的参数如果已知了,可以直接拼接在后面 如FROM A WHERE A.ID IN (1,2,3,4...)。

   3、上面的情况下,通常(1,2,3,4...)都是作为参数传递过来的,可能是数组或者List。

    假设List a;a里面已经有数据了,则HQL查询条件可以为:        

Java代码  收藏代码

    String hql="FROM A WHERE A.ID IN (:alist)";  

    Query query = getSession().createQuery(hql);  

    query.setParameterList("alist", a);  

   另外,query.setParameterList中的第二个参数,还可以是数组类型,如int[] a,不要被方法名称迷惑。我也是最近刚学会的这种in参数设置。

单个占位符:

Map params

    Iterator iterator=params.keySet().iterator();

        while(iterator.hasNext())

        {

            String string=iterator.next();

            Object object =params.get(string);

            query.setParameter(string, object);//这么hibernate会自动判断类型

       

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate mysql