Hibernate Criteria 组合查询条件

通过提供多种查询条件,实现对SuSongFIn类的特定信息进行分页查询,包括等值、大于、小于、范围、模糊匹配、字符串匹配等多种查询方式,并根据指定字段进行升序或降序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Restrictions.eq --> equal,等于.

Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果

Restrictions.gt --> great-than > 大于

Restrictions.ge --> great-equal >= 大于等于

Restrictions.lt --> less-than, < 小于

Restrictions.le --> less-equal <= 小于等于

Restrictions.between --> 对应SQL的between子句

Restrictions.like --> 对应SQL的LIKE子句

Restrictions.in --> 对应SQL的in子句

Restrictions.and --> and 关系

Restrictions.or --> or 关系

Restrictions.isNull --> 判断属性是否为空,为空则返回true

Restrictions.isNotNull --> 与isNull相反

Restrictions.sqlRestriction --> SQL限定的查询

Order.asc --> 根据传入的字段进行升序排序

Order.desc --> 根据传入的字段进行降序排序

MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"

MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"

MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"

MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'"

 收藏代码
  1. Configuration config new Configuration();  
  2. SessionFactory sessionFactory config.configure().buildSessionFactory();  
  3.   
  4. Criteria criteria session.createCriteria(MyPoJo.class);  
  5.   
  6. //等于条件  
  7. //Restrictions.eq(String,object);  
  8. criteria.add(Restrictions.eq("UserID"1001));  
  9.   
  10. //其它条件以此类推  
  11.  Restrictions.gt 对应SQL中的 “field value ” 表达式  
  12.  Restrictions.ge 对应SQL中的 “field >= value” 表达式  
  13.  Restrictions.lt 对应SQL中的 “field value” 表达式  
  14.  Restrictions.le 对应SQL中的 “field <= value” 表达式  
  15.  Restrictions.between 对应SQL中的 “between” 表达式  
  16.  Restrictions.in 传入一个数组进行IN查询  
  17.  Restrictions.like 进行模糊查询  
  18.  Restrictions.ilike 不区分大小写的模糊查询  
Java代码  收藏代码
  1.   
  2.     public Pager getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS,  
  3.             String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM,  
  4.             String SYS_TIME_START, String SYS_TIME_END,  
  5.             String yuJiaoSJ_START,String yuJiaoSJ_END,String queRenSJ_START,String queRenSJ_END, int is_Complete,  
  6.             String chuangJianR,String jiaoKuanR,String queRenR,String feiYongLX,int is_ZhiXing,  
  7.             String sortName, String sortOrder,int pageNo,int pageSize)  
  8.           
  9.         Pager pager new Pager();//分页的装载工具类  
  10.           
  11.         try  
  12.             Criteria criteria daoTool.createCriteria(TSpSsfIn.class);//创建Hibernate参数式查询  
  13.                
  14.             SimpleDateFormat dateFormat new SimpleDateFormat("yyyy-mm-dd");//定义日期格式化工具,用于查询条件增加  
  15.               
  16.             //判断组装查询条件  
  17.             if(StringHelper.isNotEmpty(JLID)){  
  18.                 criteria.add(Restrictions.eq("JLID"JLID));  
  19.              
  20.               
  21.             if(StringHelper.isNotEmpty(jiaoKuanBM)){  
  22.                 criteria.add(Restrictions.eq("jiaoKuanBM"jiaoKuanBM));  
  23.              
  24.               
  25.             if(StringHelper.isNotEmpty(feiYongLX)){  
  26.                 criteria.add(Restrictions.eq("feiYongLX"feiYongLX));  
  27.              
  28.               
  29.             if(StringHelper.isNotEmpty(anJianBS)){  
  30.                 criteria.add(Restrictions.eq("anJianBS"anJianBS));  
  31.              
  32.               
  33.             if(StringHelper.isNotEmpty(jiaoKuanRBM)){  
  34.                 criteria.add(Restrictions.eq("jiaoKuanRBM"jiaoKuanRBM));  
  35.              
  36.               
  37.             if(yuJiaoJE != -1){  
  38.                 criteria.add(Restrictions.eq("yuJiaoJE"yuJiaoJE));  
  39.              
  40.               
  41.             if(StringHelper.isNotEmpty(yuJiaoSJ_START)){  
  42.                 criteria.add(Restrictions.ge("yuJiaoSJ"Timestamp.valueOf(yuJiaoSJ_START 00:00:00")));  
  43.              
  44.               
  45.             if(StringHelper.isNotEmpty(yuJiaoSJ_END)){  
  46.                 criteria.add(Restrictions.le("yuJiaoSJ"Timestamp.valueOf(yuJiaoSJ_END 23:59:59")));  
  47.              
  48.               
  49.             if(StringHelper.isNotEmpty(SYS_TIME_START)){   
  50.                 criteria.add(Restrictions.ge("SYS_TIME"Timestamp.valueOf(SYS_TIME_START 00:00:00")));  
  51.              
  52.               
  53.             if(StringHelper.isNotEmpty(SYS_TIME_END)){  
  54.                 criteria.add(Restrictions.le("SYS_TIME"Timestamp.valueOf(SYS_TIME_END 23:59:59")));  
  55.              
  56.               
  57.             if(StringHelper.isNotEmpty(queRenSJ_START)){  
  58.                 criteria.add(Restrictions.ge("queRenJKRQ"Timestamp.valueOf(queRenSJ_START 00:00:00")));  
  59.              
  60.               
  61.             if(StringHelper.isNotEmpty(queRenSJ_END)){  
  62.                 criteria.add(Restrictions.le("queRenJKRQ"Timestamp.valueOf(queRenSJ_END 00:00:00")));  
  63.              
  64.               
  65.             if(is_Complete != -1){  
  66.                 criteria.add(Restrictions.eq("is_Complete"is_Complete));  
  67.              
  68.               
  69.             if(is_ZhiXing != -1){  
  70.                 criteria.add(Restrictions.eq("is_ZhiXing"is_ZhiXing));  
  71.              
  72.               
  73.             if(StringHelper.isNotEmpty(chuangJianR)){  
  74.                 criteria.createAlias("creator""creator");//增加表关联并做查询操作(等同于在SQL中加入了两张表的直等关联,具体关联子表用什么字段是通过HRM.XML配置文件进行配置)  
  75.                 criteria.add(Restrictions.ilike("creator.userName"chuangJianR,MatchMode.ANYWHERE));  
  76.              
  77.               
  78.             if(StringHelper.isNotEmpty(queRenR)){  
  79.                 criteria.createAlias("userInfo""userInfo");//增加表关联并做查询操作  
  80.                 criteria.add(Restrictions.ilike("userInfo.userName"queRenR,MatchMode.ANYWHERE));  
  81.              
  82.               
  83.             if(StringHelper.isNotEmpty(jiaoKuanR)){  
  84.                 criteria.add(Restrictions.ilike("jiaoKuanR"jiaoKuanR,MatchMode.ANYWHERE));  
  85.              
  86.               
  87.   
  88.   
  89.               
  90.             // 获取根据条件分页查询的总行数    
  91.             int rowCount (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult();    
  92.             criteria.setProjection(null);    
  93.               
  94.             //进行排序判断方式和需要排序的字段并加入  
  95.             if(StringHelper.isNotEmpty(sortName) && StringHelper.isNotEmpty(sortOrder)){  
  96.                 if(sortOrder.equals("asc")){  
  97.                     criteria.addOrder(Order.asc(sortName));  
  98.                 }else if(sortOrder.equals("desc")){  
  99.                     criteria.addOrder(Order.desc(sortName));  
  100.                  
  101.              
  102.               
  103.             //设置分页信息  
  104.             criteria.setFirstResult((pageNo 1pageSize);  //从那条数据开始  
  105.             criteria.setMaxResults(pageSize);  //获取条数  
  106.         
  107.             criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);  //只返回根对象,不加此限制结果将返回数组,包含根对象与关联对象      
  108.             List result criteria.list(); //获取查询结果  
  109.               
  110.             //装载查询结果  
  111.             pager.setPageNo(pageNo);  
  112.             pager.setPageSize(pageSize);  
  113.             pager.setRowCount(rowCount);  
  114.             pager.setResult(result);  
  115.               
  116.               
  117.         catch (Exception e)  
  118.             log.error("[SuSongFManagerImp.getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS,"  
  119.                     "String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM,"  
  120.                     "String SYS_TIME_START, String SYS_TIME_END, int is_Complete,"  
  121.                     "String sortName, String sortOrder,int pageNo,int pageSize)]"+e.getMessage());  
  122.          
  123.           
  124.           
  125.         return pager;  
  126.      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值