hibernate 模糊查询及not in子查询

代码如下

Query query1=this.getSession().createSQLQuery(" select p.smallClassId as smallClassId,p.id as id,p.name as name,p.thumbNail as thumbNail,p.marketPrice as marketPrice,p.memberPrice as memberPrice from product p  where  p.name like ? and p.smallClassId= ? and p.valid=true  and p.id not in (select sp.productId from  special_product  sp where  sp.specialId =? and sp.valid=true)")
    .addScalar("id",StandardBasicTypes.LONG)
      .addScalar("thumbNail")
      .addScalar("marketPrice")
      .addScalar("memberPrice")  
            .addScalar("name")
            .addScalar("smallClassId",StandardBasicTypes.LONG)
            .setResultTransformer(Transformers.aliasToBean(SpecialVo.class)); 
  query1.setParameter(0, "%"+name+"%");
  query1.setParameter(1, smallClassId);
  query1.setParameter(2, id);
  List<SpecialVo> specialVos1=query1.list();
  
  for (SpecialVo s:specialVos1){
     s.setIsSpecial(false);
     s.setQuantity(0);
   }
  specialVos.addAll(specialVos1);
时间: 2024-11-02 09:41:08

hibernate 模糊查询及not in子查询的相关文章

sql的基础语句-单行函数,dual,数字函数,日期函数,表连接,集合运算,分组报表,单行子查询,多行子查询

3. 单行函数 3.1 转换函数 select ascii('A'),chr(65) from dual; select to_char(1243123),1231451 from dual;靠左边的就是字符串,靠右边的就是数字 select to_char(123512a121) from dual;   --错误的写法,没有引号表示数字,但是数字里面包含了字母,不合法的输入值 select to_number('123141211') from dual; select to_number(

1.子查询知识体系,单行子查询,多行子查询

 1查询工资比scott高的员工信息 A 第一步:查询出scott这个员工的工资 select sal from emp where ename = 'SCOTT'; B 第二步:查询出工资比scott高的员工信息 select * fromemp where sal >3000; 总结: 子查询的本质:多个select语句的嵌套 2:子查询的知识体系搭建 A 合理的书写风格 B 子查询外面()不要忘记 C 子查询和主查询可以查询的是同一张表,也可以不是同一张表 只要子查询返回的结果,主查询

[Z]T-SQL查询进阶--深入理解子查询

原文链接: http://www.cnblogs.com/CareySon/archive/2011/07/18/2109406.html 引言 SQL有着非常强大且灵活的查询方式,而多表连接操作往往也可以用子查询进行替代,本篇文章将会讲述子查询的方方面面. 简介 子查询本质上是嵌套进其他SELECT,UPDATE,INSERT,DELETE语句的一个被限制的SELECT语句,在子查询中,只有下面几个子句可以使用 SELECT子句(必须) FROM子句(必选) WHERE子句(可选) GROUP

Entity Framework查询生成大量的子查询,如何避免?求救

最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的查询,都存在子查询,而子查询往往会影响到查询性能,在这里,我想问问大虾,除了自己写SQL语句,有没有更好的解决办法在Entity Framework基础上处理这个问题? 如图所示: Entity Framework查询代码 private async Task<QuotationDto[]> Ge

SQL疑难杂症【4 】大量数据查询的时候避免子查询

前几天发现系统变得很慢,在Profiler里面发现有的SQL执行了几十秒才返回结果,当时的SQL如下: 可以看得出来,在652行用了子查询,恰巧目标表(QS_WIP)中的记录数为100000000+,通过如下SQL可以得到: SELECT ROWS FROM SYSINDEXES WHERE ID=OBJECT_ID('QS_WIP') AND INDID <2 大量的数据导致子查询的效率非常慢,应用系统一度提示"time out",经过优化,改为如下写法,执行效率明显提升: 先

Oracle-28-子查询之多行子查询&amp;子查询之多列子查询

一.子查询的基本类型之多行子查询 (1)使用IN操作符进行多行子查询.(总结:IN操作符后可用多行子查询) 比如:查询各个职位中工资最高的员工信息. SQL>select ename, job, sal from emp where salin (select max(sal) from emp group by job);--单列子查询 或 SQL>select ename, job, sal from emp where (sal,job)in (select max(sal), job

三表查询、用到子查询,

SELECT d.*,COUNT(c.id) cCount FROM (SELECT a.*,COUNT(b.id) bCount FROM guang a LEFT JOIN guang2 b ON a.id = b.pid GROUP BY a.id ) AS d LEFT JOIN guang3 c ON d.id = c.fid GROUP BY d.id ORDER BY d.bCount DESC,cCount DESC 子查询就是把子sql语句查询出来当做一张表,再与另外的表关联查

mysql优化---in型子查询,exists子查询,from 型子查询

in型子查询引出的陷阱:(扫更少的行,不要临时表,不要文件排序就快) 题: 在ecshop商城表中,查询6号栏目的商品, (注,6号是一个大栏目) 最直观的: mysql> select goods_id,cat_id,goods_name from goods where cat_id in (select cat_id from category where parent_id=6); 误区: 给我们的感觉是, 先查到内层的6号栏目的子栏目,如7,8,9,11 然后外层, cat_id in

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

● 关联子查询会在细分的组内进行比较时使用.● 关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分.● 关联子查询的结合条件如果未出现在子查询之中就会发生错误. 普通的子查询和关联子查询的区别 这样大家就能明白该进行什么样的操作了吧.我们并不是要以全部商品为基础,而是要以细分的组为基础,对组内商品的平均价格和各商品的销售单价进行比较. 关联子查询也是用来对集合进行切分的 结合条件一定要写在子查询中 原文地址:https://www.cnblogs.com/MarlonKang/p/