Java实现伪查询(全匹配+模糊匹配)

在项目中一直习惯了框架下[springboot+mybatis]的增删改查,然后领导突然给了一个需求,让我先弄一些假数据出来,用于页面的展示,业务啥的也没说,咱是啥也不知道,咱也不该问,直接动手吧。(可能到了这里大家会说,不了解需求、业务的情况下就动手写,怕不是个新手吧!在编程一途中,小编的确是个新手,但是这次不一样,这次的业务需求是真没有,不废话了,上代码吧!)

由于是Javaweb的项目,所以共有controller层、service层,省去dao层。

  • 实体类POJO:
public class Specification {/*** 主键ID*/private String id;/*** 物料编号*/private String materilid;/*** 关键字*/private String materilname;/*** 技术规范ID*/private String firmdocumentid;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getMaterilid() {return materilid;}public void setMaterilid(String materilid) {this.materilid = materilid;}public String getMaterilname() {return materilname;}public void setMaterilname(String materilname) {this.materilname = materilname;}public String getFirmdocumentid() {return firmdocumentid;}public void setFirmdocumentid(String firmdocumentid) {this.firmdocumentid = firmdocumentid;}public Specification(String id, String materilid, String materilname, String firmdocumentid) {super();this.id = id;this.materilid = materilid;this.materilname = materilname;this.firmdocumentid = firmdocumentid;}public Specification() {}
}
  • service层
public interface ISpecificationService {/*** @query:根据查询条件 查询* @param queryCondition 查询条件* @return QueryResultObject 查询结果* @date 2019-10-11 15:32:34* @author Administrator*/public QueryResultObject query(RequestCondition queryCondition);
}
  • service实现层
@Service
public class SpecificationService implements ISpecificationService {@Overridepublic QueryResultObject query(RequestCondition queryCondition) {if(queryCondition == null){throw new NullArgumentException("queryCondition");}List<QueryFilter> qList = queryCondition.getQueryFilter();String materialid = null;  String materialname = null; for(QueryFilter filter : qList){if("materialid".endsWith(filter.getFieldName().toLowerCase())){materialid = (String) filter.getValue();}if("materialname".endsWith(filter.getFieldName().toLowerCase())){materialname = (String) filter.getValue();}}PageRequest request = CommonUtils.buildPageRequest(queryCondition);int pageindex = request.getPageNumber();//开始页int pageSize = request.getPageSize();//每页大小List<Specification> result = production(materialid,materialname);long count = result.size();List<Specification> subList = null;if(count == 0){subList = result;}else{if(pageSize>count){subList = result.subList(pageindex, (int)count);}else{subList = result.subList(pageindex, pageSize);}}return RestUtils.wrappQueryResult(subList, count);}/*** 模拟查询* @param materialid* @param materialname* @return*/private List<Specification> production(String materialid , String materialname){List<Specification> list = new ArrayList<Specification>();list.add(new Specification("x00001","300066510","电网工程、基建、农网","11GH-500083521-000001"));list.add(new Specification("x00002","300066511","电网工程、设计、农网","11GH-500083521-000002"));list.add(new Specification("x00003","300066512","电网工程、基建、农网","11GH-500083521-000003"));list.add(new Specification("x00004","300066513","设计、基建、农网","11GH-500083521-000004"));list.add(new Specification("x00005","300066514","设计、基建、农网","11GH-500083521-000005"));list.add(new Specification("x00009","300066515","电网工程、设计、基建、农网","11GH-500083521-000006"));list.add(new Specification("x00007","300066516","电网工程、设计","11GH-500083521-000007"));list.add(new Specification("x00008","300066517","电网工程、设计、基建、农网","11GH-500083521-000008"));list.add(new Specification("x00009","300066514","、基建、农网","11GH-500083521-000009"));list.add(new Specification("x000010","300066514","电网工程、设计、基建、农网","11GH-500083521-000010"));list.add(new Specification("x000011","300066514","电网工程、农网","11GH-500083521-000011"));if(!Strings.isNullOrEmpty(materialid) && Strings.isNullOrEmpty(materialname)){List<Specification> resultList = new ArrayList<Specification>();for(Specification specification : list){if (materialid.equals(specification.getMaterilid())) {resultList.add(specification);}}return resultList;}if(Strings.isNullOrEmpty(materialid) && !Strings.isNullOrEmpty(materialname)){List<Specification> resultList = new ArrayList<Specification>();for(Specification specification : list){if(specification.getMaterilname().contains(materialname)){resultList.add(specification);}}return resultList;}if(!Strings.isNullOrEmpty(materialid) && !Strings.isNullOrEmpty(materialname)){//id符合的数据List<Specification> resultList = new ArrayList<Specification>();//name匹配的数据List<Specification> sList = new ArrayList<Specification>();for(Specification specification : list){if (materialid.equals(specification.getMaterilid())) {resultList.add(specification);}}if(resultList.size()>0){for (Specification specification : resultList) {if(specification.getMaterilname().contains(materialname)){sList.add(specification);}}return sList;}else{return null;}}return list;}
}
  • controller层
@RestController
@Transactional
@RequestMapping("/specification")
public class SpecificationController {/** * 日志*/private final static Logger logger = (Logger) LoggerFactory.getLogger(SpecificationController.class);@Autowiredprivate ISpecificationService specificationService;/*** @query:查询* @param requestCondition* @return WrappedResult 查询结果* @date 2019-10-11 15:32:34* @author Administrator*/@RequestMapping("/")public WrappedResult query(@QueryRequestParam("params")  RequestCondition requestCondition) {try {QueryResultObject queryResult = specificationService.query(requestCondition);logger.info("查询数据成功"); return WrappedResult.successWrapedResult(queryResult);} catch (Exception e) {logger.error(e.getMessage(), e);String errorMessage = "查询异常";if(isDev){errorMessage = e.getMessage();}return WrappedResult.failedWrappedResult(errorMessage);}}
}

好了,代码到这里就结束了,接下来开始测试:

结束语:

本次分享到这里就结束了,因为是一个小demo,故部分代码也没有进行优化,希望能帮到有需要的小伙伴!

Java实现伪查询(全匹配+模糊匹配)相关推荐

  1. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)

    Java实现伪查询(全匹配+模糊匹配) 在项目中一直习惯了框架下[springboot+mybatis]的增删改查,然后领导突然给了一个需求,让我先弄一些假数据出来,用于页面的展示,业务啥的也没说,咱 ...

  2. Java树形结构模糊搜索,模糊匹配

    Java树形结构模糊搜索,模糊匹配 相关类结构 核心代码 辅助类--树结构基类 辅助类--测试类 测试代码 发现含有州的市有 43 个 相关类结构 核心代码 package com.demo;impo ...

  3. 批量模糊查询_模糊匹配,Power Query的这个功能太实用了,可惜Excel还没有

    最近有几个星友问到,如何进行数据的模糊匹配?本文就利用一个简单的例子,来看看PowerBI是如何快速完成模糊匹配的. 模拟数据如下,有两个表,分别是各省市2018和2019年的数据, 这是个很常见的场 ...

  4. (SQL语句)查询条件模糊匹配若干字段

    一.操作环境 数据库版本:sql server 2012 测试数据库:Northwind,安装方法请参考这篇文章 二.查询条件多列模糊匹配 以下是"Orders"的表结构 模糊查询 ...

  5. ES第十三天-扩展查询-前缀匹配、通配符查询、正则查询、模糊匹配、句子前缀匹配

    前言 ES的无论什么搜索,对于text类型字段其实都是基于倒排索引去进行搜索的,也就是进行分词后的,因此如果想像传统数据库一样的模糊匹配,一般可以使用它的keyword进行搜索.(keyword不会被 ...

  6. java 匹配mysql按钮_使用Java在mysql查询中设置匹配函数

    我有以下在java中查询(mysql)的摘录: queryGeral.append("FROM product p, fabricante_product fp, fabricante f, ...

  7. Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询

    这篇博文要和大家分享的是用LIKE 运算符进行模糊匹配查询下图数据源商品代号包含数字的数据. 我们用Microsoft query连接数据源,步骤请参考本系列第一篇博文.语句如下图 其中 LIKE ' ...

  8. java删除文件模糊_Java实现的模糊匹配某文件夹下的文件并删除功能示例

    本文实例讲述了Java实现的模糊匹配某文件夹下的文件并删除功能.分享给大家供大家参考,具体如下: package com.wyebd.gis; import java.io.File; /** * @ ...

  9. 模糊匹配查询_必须掌握的6个查询函数应用技巧,办公必备,收藏备用!

    在Excel中,有一类函数被称为查找和引用函数,今天,小编给大家分享6个查询函数(Choose.Lookup.Hlookup.Vlookup.Match.Index)的应用技巧,可以收藏备用哦! 一. ...

最新文章

  1. 一文分析多模态生物识别的优势,快码起来吧!
  2. opencv-python图像处理之磨皮相机
  3. 手机版网页设计注意事项
  4. 产品技术(研发)部门组织架构及岗位职责
  5. 新建swap分区的规划、挂载和自动挂载示例
  6. 【知识图谱】知识抽取与挖掘(Ⅱ)
  7. hdu 5569(二维dp,水题)
  8. guests mysql权限_MySQL降权运行之MySQL以Guests帐户启动设置方法
  9. 男人该知道的人生感悟(图)
  10. python3.6.1安装,linux下安装Python3.6.1
  11. qscoj:喵哈哈村的狼人杀大战(5)
  12. python处理音频的库_Python中音频处理库pydub的使用教程
  13. 中值滤波原理及c语言的实现,关于中值滤波算法,以及C语言实现(转)
  14. ShuffleNet v1
  15. Excel基础教程(2)——函数与公式
  16. 基于vue-simple-uploader 实现大文件分片上传(一)
  17. Multiple Instance Detection Network with Online Instance Classifier Refinement
  18. 牛年第一瓜!阿里女员工被骗500多万!初中文化水平男子,滴滴开豪车,诈骗4000多万被判无期!...
  19. OSPF单区域配置【eNSP实现】
  20. java 山寨qq源代码_求一个山寨qq的源代码,要java语言的~谢谢

热门文章

  1. Layui分页乱码,时间控件乱码
  2. 如何建立自己的网站—建站历程分享
  3. Beginning C# 7 Programming with Visual Studio 2017 免积分下载
  4. 从事着项目管理工作。已通过pmp考试,是继续考ACP好还是NPDP好?
  5. linux 壁纸自动更换,使用LSWC在Linux中自动更换壁纸
  6. 2020芝加哥计算机博士生录取,2020年芝加哥大学博士申请条件
  7. Android系统8.0及以上开启Service必须创建显示“XX应用正在运行”通知问题处理
  8. 道格拉斯-普克算法(经纬度或坐标点抽稀)
  9. 只因小黑子的HTML入土过程第四章
  10. 漏洞之XML实体注入