java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)
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实现伪查询(全匹配+模糊匹配)相关推荐
- java字符串拆分 空字符_Java字符串拆分
java字符串拆分 空字符 Java String split() method is used to split the string into a string array based on th ...
- java 字符串转义回车键_JAVA字符串中的转义字符
一.在java字符串中如果出现斜杠, 1.当成转义字符 " \ " 时,后面必须接八进制数字进行ASCII转义输出成其它字符, 2.当成字符串字面值斜杠直接输出时,必须用双斜杠&q ...
- java字符串的用法_Java字符串的重要方法的使用实例
String类将是您存储和处理语言的主要工具之一,本篇文章将带领大家对Java字符串的方法有个基础的认识,了解他的功能使用方法. 本文摘自千锋教育编著的<Java语言程序设计>,如需转载请 ...
- java 字符串文字筛选_Java的原始字符串文字
java 字符串文字筛选 似乎" 原始字符串文字 "即将出现在Java中. JEP 326开始的("原始字符串字面量") 发行JDK-8196004 ,并宣布为 ...
- java字符串不可变_Java字符串真的是不可变的吗?
Java字符串真的是不可变的吗? 我们都知道StringJava 中是不可变的,但请检查以下代码: String s1 = "Hello World"; String s2 = & ...
- java 字符串中转义字符_Java中的转义字符
java 字符串中转义字符 Learn how we can use escape sequence in Java 了解如何在Java中使用转义序列 These characters can be ...
- java 字符串加密 解密_java字符串加密解密
java字符串加密解密 try { String test = "123456789@fdj.com"; EncryptionDecryption des = new Encryp ...
- java字符串abc反转_JAVA字符串反转的三种方法
方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(Str ...
- java字符串转公式_java把字符串转化成公式计算的示例
java把字符串转化成公式计算的示例 如下所示: static ScriptEngine jse = new ScriptEngineManager().getEngineByName("J ...
最新文章
- 用notepad++怎样批量添加引号
- centos/linux扩容Swap分区
- 靠,上班打游戏!不,我只是在Minecraft里管理Kubernetes...
- iOS获取键盘的高度
- mongodb,redis,mysql 简要对比
- LeetCode 1711. 大餐计数(map计数 + 二分查找)
- java注解执行顺序_如何确保java中的注释执行顺序?
- Android设置全局字体
- 请给 SpringBoot 多一些内存
- 对话框:创建对话框模板和修改对话框属性
- Python 3.x 中“HTTP Error 403: Forbidden“问题的解决方案
- 【SQL篇章--CREATE TABLE】
- 计网实验1--配置路由
- android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
- webform 组合查询
- jtopo node.text换行_JTopo 使用
- 服务器获取交换机端口状态,如何查找交换机端口对应的IP地址
- Java实现支付功能代码
- Idea复制文件一直updating indices
- 用AI让逝去的亲人照片动起来后,数百万网友泪目:原来思念这么重
热门文章
- fixture.detectChange是如何触发Component view的ngOnInit钩子的
- TypeScript里的interface扩展,多继承以及对应的JavaScript代码
- Angular的scope. apply和CRM WebClient UI的modify方法
- how can a model method trigger binding value refreshed
- 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
- How to get information of all attachments belonging to a given appointment
- how to find all element type with type table of content
- SAP Kyma上创建的Lambda function背后的技术实现
- IC Order search 的debugging关键点
- 获得某个organization unit下面的所有sales org id list