前端向后端传递JSON,
使用jpa的cruteria拼接sql
数据库就一个客户一行数据那种吧
向后请求:
[
{
"logic": "or",
"type": "equals",
"attr": "name",
"data": "张三"
},
{
"logic": "or",
"type": "equals",
"attr": "sex",
"data": "man"
},
{
"logic": "and",
"type": "like",
"attr": "name",
"data": "张%"
},
{
"logic": "and",
"type": "equals",
"attr": "sex",
"data": "man"
}
]
java:
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery query = criteriaBuilder.createQuery(Custom.class);
Root itemRoot = query.from(Custom.class);
List predicatesList = new ArrayList<>();
for(QueryVO queryVO : queryList){
if("and".equals(queryVO.getloic())){
if("equals".equals(queryVO.getType())){
predicatesList.add(criteriaBuilder.and(form.get(queryVO.getAttr(),queryVO.getdata());
}else if("like".equals(queryVO.getType())){
predicatesList.add(criteriaBuilder.like(form.get(queryVO.getAttr(),queryVO.getdata());
}
<>
}
}
query.where(predicatesList);
TypedQuery typedQuery = entityManager.createQuery(query);
return typedQuery.getResultList();