from :

http://blog.csdn.net/wodestudy/article/details/38200421

在处理hibernate的实体查询,一般可以采用多种方式处理复杂的查询,比如HQL的灵活使用,Query的外部参数化赋值等。但是,对于IN字句在sql中的处理,也会出现,不过,一般不建议使用这样的sql处理,转而采用关联条件来处理这种查询。

一般对于可变参数传入在in字句中,大概有下面几种总结的方法:

1、直接外面拼转sql,这种拼sql的方式容易出现sql注入,比如in(123,drop table ttt,),而且如果in字句字符串太多,也会受限的,所以一般不赞成使用。

2、进一步解决上面的问题就是拼赋值sql,采用预处理处理,比如Select * from tab t where t.id in(?,?,?....),参数一并传入就行额。缺点还是受限于要包含的那些记录数据量。

3、一般在hibernate处理这个也比较方便,采用显示参数传递赋值,如 :

String sql =  from Task t where t.id(:ids)

Dao层处理也方便:

Query query = Session.getQuery(sql);

query.setParamList("ids",List);

大概处理方式就是这样,但数据量多也有一定缺陷。

4、建议系统中出现的in处理,直接采用关联查询处理,in字句本来性能就差,没做好就是是全表扫描

Hibernate 处理查询 in 字句的更多相关文章

  1. Hibernate HQL查询:

    Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查 ...

  2. Hibernate HQL查询语句总结

    Hibernate HQL查询语句总结 1. 实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql="from User user ";L ...

  3. hibernate模糊查询

    hibernate模糊查询-Restrictions.ilike & Expression.like Criteria criteria = session.createCriteria(Ta ...

  4. Hibernate的查询方式总结

    Hibernate的查询方式大体有三种,分别是HQL QBC和SQL三种.在网上查阅一一些资料,做了一个简单的总结. 1. SQL sql 是面向数据库表查询,from 后面跟的是表名,where 后 ...

  5. atitit。 hb Hibernate sql 查询使用

    atitit. hb  Hibernate sql 查询使用 #----------返回list<map>法..这个推荐使用.      q.setResultTransformer(Tr ...

  6. Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html

    方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...

  7. Hibernate的查询,二级缓存,连接池

    Hibernate的查询,二级缓存,连接池 1.Hibernate查询数据 Hibernate中的查询方法有5中: 1.1.Get/Load主键查询 使用get或者load方法来查询,两者之间的区别在 ...

  8. hibernate sql查询转换成VO返回list

    hibernate sql查询转换成VO @Override public List<FenxiVo> getTuanDuiFenxiList(FenxiVo FenxiVo,Intege ...

  9. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

随机推荐

  1. 在Mac上激活Adobe产品

    1.在任意位置下载需要的Adobe软件(推荐官网正版) 网速不好或者不通推荐下载离线安装包: https://helpx.adobe.com/download-install/kb/creative- ...

  2. mysql出现mysql server has gone away错误的解决办法

    应用程序(比如PHP)长时间的执行批量的MYSQL语句.执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段.比如,图片数据的处理.都容易引起MySQLserver has ...

  3. bzoj 5016 一个简单的询问

    THUWC 考了莫队(这个应该可以说吧) 然而不会莫队,签到失败,所以找到了一道长得差不多的题写一写 为什么这么长时间都没有发现这道题(半恼 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问 ...

  4. BerOS file system

    The new operating system BerOS has a nice feature. It is possible to use any number of characters '/ ...

  5. 【转】深入剖析Java中的装箱和拆箱

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  6. boost1_55_0编译和安装

    1.在www.boost.org下载文件并解压 2.进行解压目录 2.1 编译前的配置工作 执行bootstrap.bat  windows 使用vs2010: 修改\boost_1_55_0\too ...

  7. MySQL 预处理语句prepare、execute、deallocate的使用

    所以对于中文乱码,需要去check的地方有如下3个:1.mysql窗口的字符编码(xshell连接的远程工具的字符集设置):2.数据库的字符编码(show variables like '%char% ...

  8. POJ3111(最大化平均值)

    K Best Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 8458   Accepted: 2163 Case Time ...

  9. MySQL启动失败解决办法

    本人大二,进了一家培训机构学了两年,然后跟着他们做项目,其实也是练习,然后过程中遇到好多错误,当时解决了,然后下次遇到又忘了,-_-!  -_-||| 我就想通过写博客来记载一下我遇到的错误和解决的办 ...

  10. x264的一些参数设置对编码效率的影响

    i_luma_deadzone[0]和i_luma_deadzone[1]分别对应inter和intra, 取值范围1~32,测试可以得知,这连个参数的调整可以对数据量有很大影响,值越大数据量相应越少 ...