controller:
package com.imooc.girl.controller;
import com.imooc.girl.entity.Result;
import com.imooc.girl.repository.GirlRepository;
import com.imooc.girl.entity.Girl;
import com.imooc.girl.service.GirlService;
import com.imooc.girl.utils.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import java.util.List;
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
@RequestMapping("/findAll" )
public List<Girl> findAll(){
System.out.println("来了吧 。。。。");
return girlRepository.findAll();
}
@PostMapping("/add")
public Result<Girl> add(@Valid Girl girl, BindingResult bindingResult){
if(bindingResult.hasErrors()){
return ResultUtil.error(0,bindingResult.getFieldError().getDefaultMessage());
}
return ResultUtil.success(girlRepository.save(girl));
}
@GetMapping("/query/{id}")
public void query(@PathVariable("id") Integer id)throws Exception{
girlService.getAge(id);
}
@PutMapping("/update/{id}/{cupSize}/{age}")
public Girl update(@PathVariable("id") Integer id,@PathVariable("cupSize")String cupSize,
@PathVariable("age")Integer age){
Girl girl = new Girl();
girl.setId(id);
girl.setAge(age);
girl.setCupSize(cupSize);
return girlRepository.save(girl);
}
@DeleteMapping("/update/{id}")
public void delete(@PathVariable("id") Integer id){
girlRepository.delete(id);
}
}
package com.imooc.girl.service;
import com.imooc.girl.entity.Girl;
import com.imooc.girl.exception.MyException;
import com.imooc.girl.repository.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
public void getAge(Integer id) throws Exception{
Girl girl=girlRepository.findOne(id);
Integer age=girl.getAge();
if(age<10){
throw new MyException(101,"你在上小学吧");
}else if(age >10&&age<20) {
throw new MyException(102,"你可能在上初中吧 ");
}
}
}
Repository:
package com.imooc.girl.repository;
import com.imooc.girl.entity.Girl;
import org.springframework.data.jpa.repository.JpaRepository;
public interface GirlRepository extends JpaRepository <Girl,Integer>{
}
entity:
扫描二维码关注公众号,回复:
3682732 查看本文章
package com.imooc.girl.entity;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Entity
public class Girl {
@Id
@GeneratedValue
private Integer id;
private String cupSize;
@Min(value=18,message = "未成年少女禁止入内")
private Integer age;
@NotNull(message = "金额不能为空")
private String money;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
// public Girl() {
// }
@Override
public String toString() {
return "Girl{" +
"id=" + id +
", cupSize='" + cupSize + '\'' +
", age=" + age +
'}';
}
}
package com.imooc.girl.entity;
/**
* http请求返回的 最外层 对象
*/
public class Result<T> {
private Integer code;
private String msg;
private T data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
AOP处理类
package com.imooc.girl.adpect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Aspect
@Component
public class HttpAspect {
private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);
@Pointcut("execution(public * com.imooc.girl.controller.GirlController.*(..) )")
public void log(){
}
@Before("log()")
public void log1(JoinPoint joinPoint){
ServletRequestAttributes attributes=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request=attributes.getRequest();
//url
logger.info("url={}",request.getRequestURL());
//method
logger.info("url={}",request.getMethod());
//ip
logger.info("url={}",request.getRemoteAddr());
//类方法
logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
//类的参数
logger.info("args={}",joinPoint.getArgs());
}
@After("log()")
public void log2(){
logger.info("2222");
}
@AfterReturning(returning = "object",pointcut = "log()")
public void afterReturn(Object object){
logger.info("response={}",object.toString());
}
}
自定义异常处理:
package com.imooc.girl.exception;
import com.imooc.girl.entity.Result;
import com.imooc.girl.utils.ResultUtil;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class ExceptionHandle {
@ExceptionHandler(value=Exception.class)
@ResponseBody
public Result handle(Exception e){
if(e instanceof MyException){
MyException my= (MyException)e;
return ResultUtil.error(my.getCode(),my.getMessage());
}else{
return ResultUtil.error(100,e.getMessage());
}
}
}
package com.imooc.girl.exception;
public class MyException extends RuntimeException {
private Integer code;
public MyException(Integer code,String message) {
super(message);
this.code = code;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
utils类
package com.imooc.girl.utils;
import com.imooc.girl.entity.Result;
public class ResultUtil {
public static Result success(Object object){
Result result=new Result();
result.setCode(1);
result.setMsg("成功 ");
result.setData(object);
return result;
}
public static Result success(){
return success(null);
}
public static Result error(Integer code,String msg){
Result result=new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
application.yml
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.1.178:3306/girl
password: root
username: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
枚举改善自定义异常:
添加枚举类
package com.imooc.girl.enums;
public enum ResultEnum {
UNKNOW_ERROR(-1,"未知错误"),
SUCCESS(0,"成功"),
PRIMARY_SCOOL(100,"你可能上的是小学"),
MIDDLE_SCOOL(200,"你可能上的是中学"),
;
private Integer code;
private String msg;
ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
Service调整:
package com.imooc.girl.service;
import com.imooc.girl.entity.Girl;
import com.imooc.girl.enums.ResultEnum;
import com.imooc.girl.exception.MyException;
import com.imooc.girl.repository.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
public void getAge(Integer id) throws Exception{
Girl girl=girlRepository.findOne(id);
Integer age=girl.getAge();
if(age<10){
throw new MyException(ResultEnum.PRIMARY_SCOOL);
}else if(age >10&&age<20) {
throw new MyException(ResultEnum.MIDDLE_SCOOL);
}
}
}
自定义异常类改善
package com.imooc.girl.exception;
import com.imooc.girl.enums.ResultEnum;
public class MyException extends RuntimeException {
private Integer code;
public MyException(ResultEnum resultEnum) {
super(resultEnum.getMsg());
this.code = resultEnum.getCode();
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}