hibernate中查询条件用参数的解决方法

本文介绍了一种在数据库查询中动态构建SQL语句的方法。通过提供公共方法来根据输入参数生成特定的SQL条件子句,如等值匹配、模糊匹配及日期范围匹配,并展示了如何在实际查询中应用这些方法。

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

1.写公共的方法:
public static String replaceSqlStr(String field,String para,String value)
    {
     String str = "";
     if(!("".equals(value)||value==null))
      str = " and " + field + "=:" +para;
     return str;
    }
   
    public static void replaceSqlStrQuery(Query q,String para,String value)
    {
     if(!("".equals(value)||value==null))
      q.setString(para,value);
    }
   
    public static String replaceLike(String field,String para,String value)
    {
     String str = "";
     if(!("".equals(value)||value==null))
      str = " and " + field + " like :" + para;
     return str;
    }
   
    public static void replaceLikeQuery(Query q,String para,String value)
    {
     if(!("".equals(value)||value==null))
      q.setString(para,"%" + value + "%");
    }
   
    public static String replaceFromDate(String field,String para,String value)
    {
     String str = "";
     if(!("".equals(value)||value==null))
      str = " and " + field + ">=:" +para;
     return str;
    }
   
    public static void replaceFromDateQuery(Query q,String para,String value)
    {
     replaceSqlStrQuery(q,para,value);
    }
   
    public static String replaceToDate(String field,String para,String value)
    {
     String str = "";
     if(!("".equals(value)||value==null))
      str = " and " + field + "<=:" +para;
     return str;
    }
   
    public static void replaceToDateQuery(Query q,String para,String value)
    {
     replaceSqlStrQuery(q,para,value+" 23:59:59");
    } 

2.在查询时就可以调用相应的公共方法

private String paraStr(Know_ExpertSearchForm form)
 {
  StringBuffer sb = new StringBuffer();
  sb.append(Database.replaceSqlStr("t53ExpertClass.classNo","classNo",form.getSClassNo()));
  sb.append(Database.replaceLike("detailContent","detailContent",form.getSDetailContent()));
  return sb.toString();
 }

   Query q = null;
   q = s.createQuery(countHql);
   Database.replaceSqlStrQuery(q,"classNo",form.getSClassNo());
   Database.replaceLikeQuery(q,"detailContent",form.getSDetailContent());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值