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会自动判断类型
}
我最常用的情况有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的Hql语句使用in关键字
- Hibernate框架使用Hql语句的in关键字
- MySql函数 FIND_IN_SET 在Hibernate HQL语句中的使用
- Hibernate中HQL使用SELECT语句
- 关于hibernate HQL不能使用insert语句
- Hibernate中HQL占位符的一点使用技巧
- Hibernate中HQL语句的使用
- Hibernate HQL语句使用总结
- 在hibernate中使用HQL语句和QBC两种方法进行查询
- Hibernate查询时,使用HQL和SQL的区别(SUM语句)
- 如何在hibernate+mySQL中使用HQL的cast语句
- Hibernate中使用HQL语句删除数据
- Hibernate中HQL占位符的一点使用技巧
- Hibernate中HQL语句的使用
- hibernate使用hql和sql查询总记录数语句
- hibernate之大批量和批量操作(使用HQL的大批量语句)
- 使用hibernate构造hql语句时order by的妙用
- Hibernate 拾遗 (批量处理 和 HQL 使用 in elements 判断从属 )
- 关于使用Hibernate 的HQL 语句进行增删改查
- hql语句中使用in查询