一、软删除原理
软删除 就是在数据库把某一条记录的状态改变、并没有在数据库删除该记录
例如:状态为0的表示已经删除、状态为1的表示正常的;
数据库表:
二 、校园显示
三、代码
列表显示要加入
predicates.add(qSchool.status.notIn(BaseConstant.SchoolStatus.DelStatus.getTypeValue()));
1.controller层
列表显示
@RequestMapping(value="/schoolList",method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> schoolList(HttpServletRequest request){
HashMap<String, Object> hashMap = new HashMap<>();
// 分页条件
Integer pageSize = Integer.parseInt(request.getParameter("limit"));
Integer pageNum = Integer.parseInt(request.getParameter("page")) - 1;
// 排序条件
String sortName = request.getParameter("sortName");
String direction = request.getParameter("direction");
// 动态搜索参数
String schoolName = request.getParameter("schoolName");
String province = request.getParameter("province");
String city = request.getParameter("city");
String area = request.getParameter("area");
List<Map<String, Object>> para = new ArrayList<>();
Map<String, Object> schoolId = new HashMap<>();
schoolId.put("schoolId", SchoolId);
para.add(schoolId);
if (StrKit.notBlank(schoolName)) {
Map<String, Object> map = new HashMap<>();
map.put("schoolName", schoolName);
para.add(map);
}
if (StrKit.notBlank(province)) {
Map<String, Object> map = new HashMap<>();
map.put("province", province);
para.add(map);
}
if (StrKit.notBlank(city)) {
Map<String, Object> map = new HashMap<>();
map.put("city", city);
para.add(map);
}
try {
return iSchoolService.schoolList(pageSize, pageNum,sortName,direction,para);
} catch (Exception e) {
hashMap.put("code", 501);
return hashMap;
}
}
//删除
@RequestMapping(value="/schoolDel",method = RequestMethod.POST)
@ResponseBody
public RetKit schoolDel(HttpServletRequest request) {
Integer id = Integer.parseInt(request.getParameter("id"));
return iSchoolService.schoolDel(id);
}
2.service层
//校园列表
public Map<String, Object> schoolList(Integer pageSize, Integer pageNum, String sortName, String direction,
List<Map<String, Object>> para) {
QSchool qSchool = QSchool.school;
QSchoolContact qSchoolContact = QSchoolContact.schoolContact;
List<Predicate> predicates = new ArrayList<>();
List<Map<String, Object>> listData = new ArrayList<>();
if (!para.isEmpty()) {
for (Map<String, Object> map : para) {
if (map.get("schoolName") != null) {
predicates.add(qSchool.schoolName.like("%" + map.get("schoolName").toString() + "%"));
} else if (map.get("province") != null) {
predicates.add(qSchool.provinceName.like("%" + map.get("province").toString() + "%"));
} else if (map.get("city") != null) {
predicates.add(qSchool.cityName.like("%" + map.get("city").toString() + "%"));
} else if (map.get("area") != null) {
predicates.add(qSchool.areaName.like("%" + map.get("area").toString() + "%"));
} else if (map.get("startTime") != null) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
predicates
.add(qSchool.createTime.between(simpleDateFormat.parse(map.get("startTime").toString()),
simpleDateFormat.parse(map.get("endTime").toString())));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (map.get("schoolId") != null) {
if (!map.get("schoolId").toString().equals("-1")) {
predicates.add(qSchool.id.eq(Integer.valueOf(map.get("schoolId").toString())));
}
}
}
}
predicates.add(qSchool.status.notIn(BaseConstant.SchoolStatus.DelStatus.getTypeValue()));
JPAQuery<Tuple> jPAQuery = jpaQueryFactory
.selectDistinct(qSchool.id, qSchool.code, qSchool.schoolName, qSchool.provinceName, qSchool.cityName,
qSchool.areaName, qSchool.location, qSchool.longitude, qSchool.latitude, qSchool.createTime,
qSchool.updateTime, qSchoolContact.phone, qSchoolContact.name)
.from(qSchool).leftJoin(qSchoolContact).on(qSchool.id.eq(qSchoolContact.schoolId))
.where(predicates.toArray(new Predicate[predicates.size()])).groupBy(qSchool.id)
.offset(pageSize * pageNum).limit(pageSize);
QueryResults<Tuple> queryResults = jPAQuery.fetchResults();
for (Tuple tuple : queryResults.getResults()) {
Map<String, Object> map = new HashMap<>();
map.put("id", tuple.get(qSchool.id));
map.put("code", tuple.get(qSchool.code) != null ? tuple.get(qSchool.code) : "");
map.put("school_name", tuple.get(qSchool.schoolName));
map.put("province_name", tuple.get(qSchool.provinceName));
map.put("city_name", tuple.get(qSchool.cityName));
map.put("area_name", tuple.get(qSchool.areaName));
map.put("location", tuple.get(qSchool.location));
map.put("longitude", tuple.get(qSchool.longitude));
map.put("latitude", tuple.get(qSchool.latitude));
map.put("create_time", new SimpleDateFormat("yyyy-MM-dd").format(tuple.get(qSchool.createTime)));
if (tuple.get(qSchool.updateTime) == null) {
map.put("update_time", "--");
} else {
map.put("update_time", new SimpleDateFormat("yyyy-MM-dd").format(tuple.get(qSchool.updateTime)));
}
map.put("name", tuple.get(qSchoolContact.name));
map.put("phone", tuple.get(qSchoolContact.phone));
listData.add(map);
}
Map<String, Object> result = new HashMap<>();
result.put("content", listData);
result.put("totalElements", queryResults.getTotal());
result.put("code", 0);
return result;
}
//删除
public RetKit schoolDel(Integer id) {
Optional<School> schoolId = iSchoolRepostory.findById(id);
if (!schoolId.isPresent()) {
return RetKit.fail("删除失败");
}
School school = schoolId.get();
school.setStatus(BaseConstant.SchoolStatus.DelStatus.getTypeValue());
iSchoolRepostory.saveAndFlush(school);
return RetKit.ok();
}
3.定义的状态
enum SchoolStatus implements BaseConstant {
EnabledStatus(1, "正常"), DelStatus(0, "软删除");
private Integer typeValue;
private String typeDescription;
private SchoolStatus(Integer typeValue, String typeDescription) {
this.typeValue = typeValue;
this.typeDescription = typeDescription;
}
public Integer getTypeValue() {
return typeValue;
}
public String getTypeDescription() {
return typeDescription;
}
}
4.运行结果