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实现伪查询(全匹配+模糊匹配)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀信誉申诉入口在哪里
- 下一篇: python怎么复制上面的语句_JAVA