一、软删除原理
软删除 就是在数据库把某一条记录的状态改变、并没有在数据库删除该记录
例如:状态为0的表示已经删除、状态为1的表示正常的;
数据库表:
sprinboot 软删除
二 、校园显示
sprinboot 软删除
三、代码
列表显示要加入

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.运行结果
sprinboot 软删除

相关文章: