遇到的情况:在做短信渠道管理添加时,先要去校验数据库中是否有该产线-短信类型-渠道的记录,如果存在就不添加。

//在库中是否存在该记录
private boolean ifExistChannelConfig(SmsChannelProductConfig smsChannelProductConfig){
ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
.withMatcher("product", ExampleMatcher.GenericPropertyMatchers.contains()) //产线采用“like”的方式查询
.withMatcher("channel", ExampleMatcher.GenericPropertyMatchers.contains()) //渠道采用“like”的方式查询
.withMatcher("type", ExampleMatcher.GenericPropertyMatchers.contains()) //短信类型采用“like”的方式查询
.withIgnorePaths("focus"); //忽略属性:是否关注。因为是基本类型,需要忽略掉 SmsChannelProductConfig condition = new SmsChannelProductConfig();
condition.setProduct(smsChannelProductConfig.getProduct());
condition.setChannel(smsChannelProductConfig.getChannel());
condition.setType(smsChannelProductConfig.getType()); condition.setRate(null);//不允许匹配权重查询 List<SmsChannelProductConfig> list = smsChannelProductConfigRepository.findAll(Example.of(condition, matcher)); if(list == null){
return false;
}else if(list.isEmpty()){
return false;
}else{
return true;
}
}
public interface SmsChannelProductConfigRepository extends JpaRepository<SmsChannelProductConfig, Long> {
}

使用SpringDataJPA进行模糊查询时:

使用findAll方法传入Example参数;

而Example参数需要根据Entity和ExampleMatcher够造;

ExampleMatcher如上述代码;

特别要注意在Entity中,如果Entity中的属性存在的值(如上述例子中的属性rate存在有效值)在ExampleMatcher中没有进行模糊查询,那么就要让该属性为null(如上述例子:condition.setRate(null) ),否则拼接成的SQL中的where语句中不止有模糊查询like,还有rate=#{rate}的判断。

SpringDataJPA模糊查询遇到的坑的更多相关文章

  1. spring-data-jpa模糊查询

    记录一条关于spring-data-jpa模糊查询的语句 方法一: @Query(value="select * from search_key a where a.key_name lik ...

  2. Dapper+Mysql 使用LIKE模糊查询写法踩坑

    LIKE '%@Title%' 会解析成'%'@Title'%' 这里用拼接也是不行的'%'+@Title+'%' 只能用MySQL函数方法拼接 public dynamic GetListByFil ...

  3. mybatis : trim标签, “等于==”经验, CDATA标签 ,模糊查询CONCAT,LIKE

    一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条 ...

  4. 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)

    上一节,我们实现了用户列表查询,已经按条件精确查询: if(student.getUsername() != null && !"".equals(student. ...

  5. Redis命令:scan实现模糊查询

    转: Redis命令:scan实现模糊查询 2017年12月31日 16:54:33 琦彦 阅读数:22893 标签: redis数据库Redis命令scan模糊查询 更多 个人分类: Redis 所 ...

  6. input动态模糊查询的实现方式

    最近在用jQuery实现动态模糊查询的时候,找了挺久都没有找到像Vue.js的watch属性这么好用的动态模糊查询方法.就分享一下目前遇到的坑和可以实现动态查询的几种方式. 1.jQuery的chan ...

  7. django实战(二)--带多字段模糊查询的分页(也是不容易)

    上节我们实现了分页功能,这节我们要实现对模糊查询后的结果进行分页.(引入了bootstrap框架) urls.py from django.urls import path from . import ...

  8. thinkphp 5 及一下或php项目里实现模糊查询

    想在thinkPHP或者PHP项目实现模糊查询怎么实现呢? 今天在网上搜了一下用 mysql里的 like 就可以实现 怎么用呢? 看代码: 错误用法: where('title','like',$s ...

  9. Mybatis框架的模糊查询(多种写法)、删除、添加(四)

    学习Mybatis这么多天,那么我给大家分享一下我的学习成果.从最基础的开始配置. 一.创建一个web项目,看一下项目架构 二.说道项目就会想到需要什么jar 三.就是准备大配置链接Orcl数据库 & ...

随机推荐

  1. each与list的用法(PHP学习)

    1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并将数组指针向前移动一步 我们先来看看返回 ...

  2. jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题

    https://github.com/douglascrockford/JSON-js使用其中的 json2.js 作为兼容.这个JS中的函数将JSON对象转换成JSON字符串,解决 IE6.7.8. ...

  3. poj 3253 Fence Repair (贪心,优先队列)

    Description Farmer John wants to repair a small length of the fence around the pasture. He measures ...

  4. 正则捕获的细节及replace分析

    1.var reg=/./与var reg=/\./的区别? 前者代表任意一个字符, 后者代表这个字符串中得有一个点 2.?的使用 如果单独的一个字符后面带? 代表1个或0个这个字符的出现: 列如: ...

  5. Apache JMeter配置、安装

    一. 工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用,后来又扩充了其它的功能.j ...

  6. sklearn 线性模型使用入门

    LinearRegression fits a linear model with coefficients  to minimize the residual sum of squares betw ...

  7. centos7 设置系统时间与网络同步

    1.安装ntpdate工具 yum -y install ntp ntpdate 2.设置系统时间与网络时间同步 ntpdate cn.pool.ntp.org 3.将系统时间写入硬件时间 hwclo ...

  8. Hadoop 2.7.3 分布式集群安装

    1. 集群规划: 192.168.1.252 palo252 Namenode+Datanode 192.168.1.253 palo253 YarnManager+Datanode+Secondar ...

  9. 基本数据结构:链表(list)

    copy from:http://www.cppblog.com/cxiaojia/archive/2012/07/31/185760.html 基本数据结构:链表(list) 谈到链表之前,先说一下 ...

  10. Hive基础之Hive的复杂类型

    ARRAY 一组有序字段,字段的类型必须相同.Array(1,2) create table hive_array(ip string, uid array<string>) row fo ...