1.Maven包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2.引入
import org.springframework.data.jpa.domain.Specification;
3.Dao继承JpaSpecificationExecutor<TTankEntity>
4.使用方式
@Autowired
TankManageDao tankManage;
Mapper mapper = DozerBeanMapperBuilder.buildDefault();
@Override
public Map<String, Object> findTanks(Map<String, String> tableMap) {
int current = Integer.valueOf(tableMap.get("current"));;
int pageSize = Integer.valueOf(tableMap.get("pageSize"));;
ArrayList<TTankVo> queryTanks = new ArrayList<>();
Map<String, Object> returnMap = new HashMap<>();
Sort sort = new Sort(Sort.Direction.ASC, "tankNo");
Pageable pageable = new PageRequest(current-1,pageSize,sort);
Specification<TTankEntity> specification = (root, query, cb) -> {
List<Predicate> predicates = new ArrayList<Predicate>();
if (tableMap.get("tankName") != null) {
String tankName = tableMap.get("tankName");
predicates.add(cb.like(root.get("tankName"),"%"+tankName+"%"));
}
if (tableMap.get("tankNo") != null) {
String tankNo = tableMap.get("tankNo");
predicates.add(cb.like(root.get("tankNo"),"%"+tankNo+"%"));
}
if (tableMap.get("tankFarmid") != null) {
String tankFarmid = tableMap.get("tankFarmid");
predicates.add(cb.like(root.get("tankFarmid"),"%"+tankFarmid+"%"));
}
Predicate[] pre = new Predicate[predicates.size()];
Predicate preAnd = cb.and(predicates.toArray(pre));
return query.where(preAnd).getRestriction();
};
Page<TTankEntity> tankPage = tankManage.findAll(specification,pageable);
for (TTankEntity tank : tankPage) {
TTankVo tTankVo = mapper.map(tank, TTankVo.class);
queryTanks.add(tTankVo);
}
returnMap.put("data", queryTanks);
returnMap.put("total", tankManage.findAll(specification).size());
returnMap.put("pageSize", pageSize);
returnMap.put("current", current);
return returnMap;
}