1. 程式人生 > >spring-data-jpa 複雜檢索實現

spring-data-jpa 複雜檢索實現

由於公司專案第一次接觸到 spring-data-jap 框架約定的實現方式

 檢索實現方式 

後來發現這種實現方式的問題 後端接到引數以後無法直接處理 

後期提出兩種方案來實現修改資料

1,在過濾器中攔截 修改引數

2,用aop 實現修改 

菁實驗兩種方式都無法實現修改,

由於我本人是個一年的小菜鳥  改問題需要時間比較久

後來檢視原始碼發現數據封裝 結構  經百度 找到一種解決方式 經實驗也可用而且靈活性及交高 

這個也是spring -data -jpa 提供的方式 

Page<CPregPrepoView> result = cPregPrepoViewService.findAllCPregPrepoView(new Specification<CPregPrepoView>() {
			@Override
			public Predicate toPredicate(Root<CPregPrepoView> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				List<Predicate> predicates = new ArrayList<Predicate>();
				root = query.from(CPregPrepoView.class);
				//Path<String> nameExp = root.get("name");
				List<String> arr = new ArrayList<String>();
				arr.add("1230");
				arr.add("789");
				predicates.add(cb.like(root.<String>get("prjname"),"%江蘇%"));
                predicates.add(cb.like(root.<String>get("prjname"),"%無錫%"));
				predicates.add(root.<String>get("maruserid").in(arr));
				return cb.and(predicates.toArray(new Predicate[predicates.size()]));
			}
		}, pageable);

到這裡問題解決了 這邊公司原來使用的是

我覺得也是蠻好用的 實現一些簡單的檢索 還是很不錯的 能節省很多程式碼