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 {

@Override

public QueryResultObject query(RequestCondition queryCondition) {

if(queryCondition == null){

throw new NullArgumentException("queryCondition");

}

ListqList = 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();//每页大小

Listresult = production(materialid,materialname);

long count = result.size();

ListsubList = 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 Listproduction(String materialid , String materialname){

Listlist = new ArrayList();

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)){

ListresultList = new ArrayList();

for(Specification specification : list){

if (materialid.equals(specification.getMaterilid())) {

resultList.add(specification);

}

}

return resultList;

}

if(Strings.isNullOrEmpty(materialid) && !Strings.isNullOrEmpty(materialname)){

ListresultList = new ArrayList();

for(Specification specification : list){

if(specification.getMaterilname().contains(materialname)){

resultList.add(specification);

}

}

return resultList;

}

if(!Strings.isNullOrEmpty(materialid) && !Strings.isNullOrEmpty(materialname)){

//id符合的数据

ListresultList = new ArrayList();

//name匹配的数据

ListsList = new ArrayList();

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);

@Autowired

private 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 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)相关推荐

  1. java字符串拆分 空字符_Java字符串拆分

    java字符串拆分 空字符 Java String split() method is used to split the string into a string array based on th ...

  2. java 字符串转义回车键_JAVA字符串中的转义字符

    一.在java字符串中如果出现斜杠, 1.当成转义字符 " \ " 时,后面必须接八进制数字进行ASCII转义输出成其它字符, 2.当成字符串字面值斜杠直接输出时,必须用双斜杠&q ...

  3. java字符串的用法_Java字符串的重要方法的使用实例

    String类将是您存储和处理语言的主要工具之一,本篇文章将带领大家对Java字符串的方法有个基础的认识,了解他的功能使用方法. 本文摘自千锋教育编著的<Java语言程序设计>,如需转载请 ...

  4. java 字符串文字筛选_Java的原始字符串文字

    java 字符串文字筛选 似乎" 原始字符串文字 "即将出现在Java中. JEP 326开始的("原始字符串字面量") 发行JDK-8196004 ,并宣布为 ...

  5. java字符串不可变_Java字符串真的是不可变的吗?

    Java字符串真的是不可变的吗? 我们都知道StringJava 中是不可变的,但请检查以下代码: String s1 = "Hello World"; String s2 = & ...

  6. java 字符串中转义字符_Java中的转义字符

    java 字符串中转义字符 Learn how we can use escape sequence in Java 了解如何在Java中使用转义序列 These characters can be ...

  7. java 字符串加密 解密_java字符串加密解密

    java字符串加密解密 try { String test = "123456789@fdj.com"; EncryptionDecryption des = new Encryp ...

  8. java字符串abc反转_JAVA字符串反转的三种方法

    方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(Str ...

  9. java字符串转公式_java把字符串转化成公式计算的示例

    java把字符串转化成公式计算的示例 如下所示: static ScriptEngine jse = new ScriptEngineManager().getEngineByName("J ...

最新文章

  1. 用notepad++怎样批量添加引号
  2. centos/linux扩容Swap分区
  3. 靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...
  4. iOS获取键盘的高度
  5. mongodb,redis,mysql 简要对比
  6. LeetCode 1711. 大餐计数(map计数 + 二分查找)
  7. java注解执行顺序_如何确保java中的注释执行顺序?
  8. Android设置全局字体
  9. 请给 SpringBoot 多一些内存
  10. 对话框:创建对话框模板和修改对话框属性
  11. Python 3.x 中“HTTP Error 403: Forbidden“问题的解决方案
  12. 【SQL篇章--CREATE TABLE】
  13. 计网实验1--配置路由
  14. android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
  15. webform 组合查询
  16. jtopo node.text换行_JTopo 使用
  17. 服务器获取交换机端口状态,如何查找交换机端口对应的IP地址
  18. Java实现支付功能代码
  19. Idea复制文件一直updating indices
  20. 用AI让逝去的亲人照片动起来后,数百万网友泪目:原来思念这么重

热门文章

  1. fixture.detectChange是如何触发Component view的ngOnInit钩子的
  2. TypeScript里的interface扩展,多继承以及对应的JavaScript代码
  3. Angular的scope. apply和CRM WebClient UI的modify方法
  4. how can a model method trigger binding value refreshed
  5. 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
  6. How to get information of all attachments belonging to a given appointment
  7. how to find all element type with type table of content
  8. SAP Kyma上创建的Lambda function背后的技术实现
  9. IC Order search 的debugging关键点
  10. 获得某个organization unit下面的所有sales org id list