>  기사  >  Java  >  Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

PHPz
PHPz앞으로
2023-05-03 17:07:151511검색

프레젠테이션 레이어 및 프런트엔드 데이터 전송 프로토콜 정의

SSM 통합 및 기능 모듈 개발이 완료된 후, 다음에는 위의 사례를 바탕으로 어떤 문제를 해결해야 하는지 분석하겠습니다. 우선 첫 번째 질문은

Controller 계층에서 데이터를 추가, 삭제, 수정하면 불리언 형태의 데이터가 프런트 엔드로 반환됩니다.

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

Controller 계층에서 단일 객체를 쿼리할 때, 프런트엔드로 반환된 개체는

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

컨트롤러 계층에서 쿼리할 때 모든 개체가 반환됩니다. 프런트엔드는 컬렉션 개체

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

현재 프런트엔드로 반환되는 데이터 유형은 세 가지입니다. 비즈니스가 성장함에 따라 점점 더 많은 데이터 유형을 반환해야 합니다. 프론트엔드 개발자의 경우 데이터를 파싱할 때 상당히 지저분하기 때문에 프론트엔드의 경우 백그라운드에서 통합된 데이터 결과를 반환할 수 있다면 프론트엔드에서는 파싱할 때 한 가지 방식으로 파싱할 수 있습니다. 개발이 더 쉬워질 것입니다.

반환된 결과 데이터를 통합할 수 있는지 궁금합니다. 구체적으로 어떻게 해야 할까요? 일반적인 아이디어는 다음과 같습니다.

  • 반환된 결과 데이터를 캡슐화하려면: 결과 모델 클래스를 만들고 데이터를 데이터에 캡슐화합니다. attribute

  • 반환된 데이터가 어떤 작업인지, 작업 성공 여부를 캡슐화하려면: 작업 결과를 코드에 캡슐화합니다 attribute

  • 작업 실패 후 반환되는 오류 메시지를 캡슐화하려면: 캡슐화 메시지(msg) 속성의 특수 메시지

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

분석을 바탕으로 통합 데이터 반환 결과 클래스를 설정할 수 있습니다

public class Result{
	private Object data;
	private Integer code;
	private String msg;
}

참고: 결과 클래스 이름과 클래스의 필드는 고정되지 않습니다. 필요에 따라 늘리거나 줄일 수 있어 다양한 구성 방법을 제공하여 편리한 작업이 가능합니다.

프레젠테이션 레이어 및 프런트엔드 데이터 전송 프로토콜 구현

결과 캡슐화

결과 캡슐화를 위해서는 프리젠테이션 레이어에서 처리해야 하므로 결과 클래스를 컨트롤러 패키지 아래에 넣을 수도 있습니다. 결과 캡슐화를 구현하는 방법은 다음과 같습니다.

1단계: 결과 클래스 만들기

public class Result {
    //描述统一格式中的数据
    private Object data;
    //描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败
    private Integer code;
    //描述统一格式中的消息,可选属性
    private String msg;
    public Result() {
    }
    //构造方法是方便对象的创建
    public Result(Integer code,Object data) {
        this.data = data;
        this.code = code;
    }
    //构造方法是方便对象的创建
    public Result(Integer code, Object data, String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = 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;
    }
    @Override
    public String toString() {
        return "Result{" +
                "data=" + data +
                ", code=" + code +
                ", msg='" + msg + '\'' +
                '}';
    }
}

참고:

toString 메서드를 작성할 필요는 없습니다. 결국 json 형식으로 변환됩니다. 하지만 getter 및 setter 메서드가 있어야 합니다!

2단계: 반환 코드 코드 클래스 정의

//状态码
public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer GET_OK = 20041;
    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer GET_ERR = 20040;
}

참고: 코드 클래스의 상수 디자인은 고정되지 않으며 필요에 따라 늘리거나 줄일 수 있습니다. 예를 들어 쿼리는 GET_OK, GET_ALL_OK, GET_PAGE_OK로 세분화됩니다. 등.

3단계: 컨트롤러 클래스의 반환 값 수정

//统一每一个控制器方法返回值
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;
    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
    }
    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
    }
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
    }
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
        String msg = book != null ? "" : "数据查询失败,请重试!";
        return new Result(code,book,msg);
    }
    @GetMapping
    public Result getAll() {
        List<Book> bookList = bookService.getAll();
        Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
        String msg = bookList != null ? "" : "数据查询失败,请重试!";
        return new Result(code,bookList,msg);
    }
}

여기에서 bookList를 null과 비교하는 이유는 모든 쿼리에서 결과가 발견되지 않으면 빈 목록 대신 null이 직접 반환되기 때문입니다!

ID를 기준으로 책을 확인할 때 찾을 수 없으면 null도 반환됩니다.

마지막으로 프로젝트 구조:

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

4단계: 서비스 테스트 시작

Java SSM 통합 개발 통합 결과 캡슐화 사례 분석

반품 결과 이미 통합된 형식이 프런트 엔드에 반환될 수 있습니다. 반환된 결과에 따라 프런트 엔드는 먼저 code,根据code判断,如果成功则取data属性的值,如果失败,则取msg의 값을 프롬프트로 가져옵니다.

위 내용은 Java SSM 통합 개발 통합 결과 캡슐화 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제