SpringMVC新增跟修改共用一个接口

1. 以往SpringMVC的新增以及修改需要提供两个接口

  • 新增
	@RequestMapping("/test/save")
	public String save(@RequestBody Test test){
		try {
			this.testService.insertTest(test);
			return "succeed";
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
  • 修改
	@RequestMapping("/test/save")
	public String update(@RequestBody Test test){
		try {
			this.testService.updateTest(test);
			return "succeed";
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

2. SpringMVC新增跟修改共用一个接口

	@RequestMapping("/test/saveorupdate")
	public String saveOrUpdate(@RequestBody Test test){
		try {
			if (test.getId()!=null) {
				this.testService.insertTest(test);
			} else {
				this.testService.updateTest(test);
			}
			return "succeed";
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

这种写法精简,但是也有一些不方便的地方,比如你在实体类中使用@NotEmpty,想要在新增的时候对字段进行非空判断,就会影响到修改,同时对RESTful风格也不是很友好,毕竟RESTful的URI表示一个资源名称,通常post新增,put修改,get获得,delete删除,如果新增跟修改共用一个url的话可能会产生歧义,如

@PostMapping("/test")

你就无法从url判断是要新增还是修改了!

你可能感兴趣的:(SpringMVC新增跟修改共用一个接口)