package com.xs.controller;
import com.xs.domain.Girl;
import com.xs.domain.Result;
import com.xs.repository.GirlRepository;
import com.xs.service.GirlService;
import com.xs.utils.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* 直接在右边的文件框里编辑你说需要注释的东西,
* 然后应用保存之后,当你创建类的时候就会自动生成注释。
*/
@RestController
public class GirlController {
//打印输出方式 注意:里面的参数与类名保持一致:GirlController
private final static Logger logger = LoggerFactory.getLogger(GirlController.class);
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
// 查询所有女生列表
@GetMapping(value = "/girls")
public List<Girl> girlList() {
logger.info("girlList方法调用中");
//System.out.println("girlList方法调用中");
return girlRepository.findAll();
}
//添加一个女生
// 这个做了表单验证:即满足条件要求就添加进去,不满足就不能添加--进阶篇的第一讲
//@PostMapping(value = "girls")
//写法一:
//public Girl girlAdd(@RequestParam("cupSize") String cupSize,
// @RequestParam("age") Integer age) {
//Girl girl = new Girl();
//girl.setCupSize(cupSize);
//girl.setAge(age);
//写法二:当对象属性过多时候这样添加(推荐):将单个属性添加换成对象
@PostMapping(value = "/girls")
public Result<Girl> girlAdd(@Valid Girl girl, BindingResult bindingResult) {
//在bean里面设置最小值标签,这里的 @Valid 注释表示要验证的对象,bindingResult:获取验证之后的返回结果
//如果验证失败,打印结果
if (bindingResult.hasErrors()) {
//原始版-成功失败都要单独写
/* Result result = new Result();
result.setCode(1);
result.setMsg(bindingResult.getFieldError().getDefaultMessage());
//result.setData(null);//这里也可以不设置*/
//优化版-封装方法
//return null; //测试让其报异常
return ResultUtil.error(1,bindingResult.getFieldError().getDefaultMessage());
}
girl.setCupSize(girl.getCupSize());
girl.setAge(girl.getAge());
//原始版-成功失败都要单独写
/* Result result = new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(girlRepository.save(girl));*/
//优化版-封装方法
return ResultUtil.success(girlRepository.save(girl));
}
//查询一个女生
@GetMapping(value = "/girls/{id}")
public Girl girlFindOne(@PathVariable("id") Integer id) {
return girlRepository.findOne(id);
}
//跟新-记得传更新的内容
@PutMapping(value = "/girls/{id}")
public Girl girlUpdate(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age) {
Girl girl = new Girl();
girl.setId(id);
girl.setCupSize(cupSize);
girl.setAge(age);
//这里调用的也是save()方法
// 跟新会根据你数据库设置的值:如id主键的值进行更新,返回的还是一个对象
//用postman查询的时候注意选择Body选项里面第二个x-www-form-yrlencoded该选项
return girlRepository.save(girl);
}
//删除
@DeleteMapping(value = "/girls/{id}")
public void girlDelete(@PathVariable("id") Integer id) {
girlRepository.delete(id);
}
//通过年龄查询女生列表
@GetMapping(value = "/girls/age/{age}")
public List<Girl> girlListByAge(@PathVariable("age") Integer age) {
return girlRepository.findByAge(age);
}
@PostMapping(value = "/girls/two")
public void girlTwo() {
girlService.insertTwo();
}
@GetMapping(value = "girls/getAge/{id}") //注意名称不要跟其他地方相同了,会报异常
public void getAge(@PathVariable("id") Integer id) throws Exception{
//逻辑代码要放在service层:其他地方没有放,以后写参考这里的写法
girlService.getAge(id);
}
}
import com.xs.domain.Girl;
import com.xs.domain.Result;
import com.xs.repository.GirlRepository;
import com.xs.service.GirlService;
import com.xs.utils.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* 直接在右边的文件框里编辑你说需要注释的东西,
* 然后应用保存之后,当你创建类的时候就会自动生成注释。
*/
@RestController
public class GirlController {
//打印输出方式 注意:里面的参数与类名保持一致:GirlController
private final static Logger logger = LoggerFactory.getLogger(GirlController.class);
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
// 查询所有女生列表
@GetMapping(value = "/girls")
public List<Girl> girlList() {
logger.info("girlList方法调用中");
//System.out.println("girlList方法调用中");
return girlRepository.findAll();
}
//添加一个女生
// 这个做了表单验证:即满足条件要求就添加进去,不满足就不能添加--进阶篇的第一讲
//@PostMapping(value = "girls")
//写法一:
//public Girl girlAdd(@RequestParam("cupSize") String cupSize,
// @RequestParam("age") Integer age) {
//Girl girl = new Girl();
//girl.setCupSize(cupSize);
//girl.setAge(age);
//写法二:当对象属性过多时候这样添加(推荐):将单个属性添加换成对象
@PostMapping(value = "/girls")
public Result<Girl> girlAdd(@Valid Girl girl, BindingResult bindingResult) {
//在bean里面设置最小值标签,这里的 @Valid 注释表示要验证的对象,bindingResult:获取验证之后的返回结果
//如果验证失败,打印结果
if (bindingResult.hasErrors()) {
//原始版-成功失败都要单独写
/* Result result = new Result();
result.setCode(1);
result.setMsg(bindingResult.getFieldError().getDefaultMessage());
//result.setData(null);//这里也可以不设置*/
//优化版-封装方法
//return null; //测试让其报异常
return ResultUtil.error(1,bindingResult.getFieldError().getDefaultMessage());
}
girl.setCupSize(girl.getCupSize());
girl.setAge(girl.getAge());
//原始版-成功失败都要单独写
/* Result result = new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(girlRepository.save(girl));*/
//优化版-封装方法
return ResultUtil.success(girlRepository.save(girl));
}
//查询一个女生
@GetMapping(value = "/girls/{id}")
public Girl girlFindOne(@PathVariable("id") Integer id) {
return girlRepository.findOne(id);
}
//跟新-记得传更新的内容
@PutMapping(value = "/girls/{id}")
public Girl girlUpdate(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age) {
Girl girl = new Girl();
girl.setId(id);
girl.setCupSize(cupSize);
girl.setAge(age);
//这里调用的也是save()方法
// 跟新会根据你数据库设置的值:如id主键的值进行更新,返回的还是一个对象
//用postman查询的时候注意选择Body选项里面第二个x-www-form-yrlencoded该选项
return girlRepository.save(girl);
}
//删除
@DeleteMapping(value = "/girls/{id}")
public void girlDelete(@PathVariable("id") Integer id) {
girlRepository.delete(id);
}
//通过年龄查询女生列表
@GetMapping(value = "/girls/age/{age}")
public List<Girl> girlListByAge(@PathVariable("age") Integer age) {
return girlRepository.findByAge(age);
}
@PostMapping(value = "/girls/two")
public void girlTwo() {
girlService.insertTwo();
}
@GetMapping(value = "girls/getAge/{id}") //注意名称不要跟其他地方相同了,会报异常
public void getAge(@PathVariable("id") Integer id) throws Exception{
//逻辑代码要放在service层:其他地方没有放,以后写参考这里的写法
girlService.getAge(id);
}
}