hibernate一值多字段模糊查询

  1. public Page getCoordByPage(Page queryHandler, TCoordinate conditions) {
  2. DetachedCriteria dc = DetachedCriteria.forClass(TCoordinate.class);
  3. if (conditions.getTAxis() != null) {
  4. dc.add(Restrictions.eq("TAxis", conditions.getTAxis()));
  5. }
  6. if(conditions.getCoordinateName()!=null){
  7. dc.add(Restrictions.like("coordinateName", conditions.getCoordinateName(),MatchMode.ANYWHERE).ignoreCase());
  8. }
  9. if(conditions.getParentCoordinate().getId()!=null){
  10. dc.add(Restrictions.eq("parentCoordinate.id", conditions.getParentCoordinate().getId()));
  11. }
  12. dc.addOrder(Order.desc("addDate"));
  13. Page page = this.coordinateDao.getPageByCriteria(queryHandler, dc);
  14. return page;
  15. }

两个条件之间or的用法【Restrictions.or(lhs, rhs)】:

[java] view plain copy

  1. dc.add(Restrictions.or(Restrictions.like("country", comm.getCountry(),MatchMode.ANYWHERE).ignoreCase(),
  2. Restrictions.like("pinyin", comm.getCountry(),MatchMode.ANYWHERE).ignoreCase()));

超过两个,比如三个条件之间的or【Disjunction disjunction = Restrictions.disjunction();】:

[java] view plain copy

    1. if(!ValidateUtils.isEmpty(comm.getCountry())){
    2. Disjunction disjunction = Restrictions.disjunction();
    3. disjunction.add(Restrictions.like("country", comm.getCountry(),MatchMode.ANYWHERE).ignoreCase());
    4. disjunction.add(Restrictions.like("pinyin", comm.getCountry(),MatchMode.ANYWHERE).ignoreCase());
    5. disjunction.add(Restrictions.like("jianpin", comm.getCountry(),MatchMode.ANYWHERE).ignoreCase());
    6. dc.add(disjunction);
    7. }
    8. hibernate 查询match mode的四种模式

      Hibernate 查询MatchMode的四种模式

      MatchMode.START:字符串在最前面的位置.相当于"like ‘key%‘"
      MatchMode.END:字符串在最后面的位置.相当于"like ‘%key‘"
      MatchMode.ANYWHERE:字符串在中间匹配.相当于"like ‘%key%‘"
      MatchMode.EXACT:字符串精确匹配.相当于"like ‘key‘"

时间: 2024-10-07 03:23:51

hibernate一值多字段模糊查询的相关文章

MySQL单表多字段模糊查询解决方法

在最近的一个项目需要实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段 例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍.然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录. 可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词.如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此

Mybatis mysql 一个搜索框多个字段模糊查询 OR

根据搜索框给定的关键词,模糊搜索用户名和账号都匹配的用户集合 <select id="list" parameterType="com.user.UserInfo" resultType="com.user.UserInfo"> SELECT * FROM user WHERE 1 = 1 <if test="searchParam != null and searchParam != ''"> AND

pymongo 中的模糊查询以及以某个值开始的模糊查询【pymongo $regex /^】

说明:主要是mongodb数据库的客户端中的shell命令查询和Python中的查询语法有些诧异: 模糊查询诧异: shell中: db.getCollection('郑州').find({community_name_pinyin:/^search_value/})[查询以search_value开始的数据] db.getCollection('郑州').find({community_name_pinyin:/search_value/})[查询字段中包含search_value的数据] p

关于mongodb按照字段模糊查询方法

模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1  --port 17017  test db.test_info.find({"tname": {$regex: '测试', $options:'i'}}) db.test_info.find({"tname": {$regex:/测试.*/i}})

mysql搜索多表多字段模糊查询

select parttime_job_business_assessments.*, u.nick_name, u.mobile, pj.name as job_name, b.name as business_name from `parttime_job_business_assessments` left join `users` as `u` on `u`.`id` = `parttime_job_business_assessments`.`user_id` left join `p

T-SQL---多值模糊查询的处理

多值模糊查询的处理 所谓多值模糊查询,就是应用程序中传递过来多个参数,对这些参数做拆分,拆分之后,对拆分结果的key值分别做模糊查询处理 对于精确匹配时,不管是单个Key值还是多个Key值,都很容易处理,备选方案也很多 对于模糊查询,单个key值也很容易,也就是 --where name like '%parameter%'(不要告诉我全模糊效率低之类的,我这里不是做性能对比的) 但是对于多个Key值的模糊处理,就不是太直接了,比如name字段,输入'三,四,五',要求分别按照三,四,五三个字符

某表含有N个字段超精简模糊查询方法

我们在做多个字段模糊查询时,是不是觉得非常麻烦?比如我要模糊查询某表多个字段存在某数据时,如下 select * from table where a like '%key%' or b  like '%key%' or c like '%key%'.......... 上面的语句不但长,而且写起来好麻烦.我们是不是有更好的办法呢? 答案是肯定的.我们可以这样写: SELECT * FROM  table where CONCAT(a,b,c......) like '%key%' 这样不就显得

Spring data jpa模糊查询,根据某一个字段,或者多个字段进行模糊查询

这里分别列举里三种情况: 1.一个字段的模糊查询 2.一个字段模糊查询和一个字段不支持模糊查询 3.两个以上的字段支持模糊查询 刚开始,使用like发现并不起作用,后来经同事帮忙,才改成的Containing关键字:     public List<Nodes> findByIpContaining(String ip, Pageable pageable);     public List<Nodes> findByIpContainingAndStatus(String ip,

sql多字段模糊查询优化

在实际开发中经常会遇到同一个关键字需要对多个字段模糊查询,比如一个用户表在输入关键字查询时可能要对用户名.用户姓名.联系电话等字段进行模糊查询 如果写成:where userName like '%关键字%' or fullName like '%关键字%' or mobile like '%关键字%'这种方式会导致性能非常低,几十万条数据可能就要很长世间才查询出来,为了解决这个问题,可以把这几个字段拼接起来然后再对拼接的字符串进行字符串搜索,这样性能将得到非常高的提升: 在sql server