Maison  >  Article  >  Java  >  Analyse d'exemples d'encapsulation de résultats unifiés de développement intégré Java SSM

Analyse d'exemples d'encapsulation de résultats unifiés de développement intégré Java SSM

PHPz
PHPzavant
2023-05-03 17:07:151511parcourir

Couche de présentation et définition du protocole de transmission de données frontale

Une fois l'intégration SSM et le développement des modules fonctionnels terminés, nous analyserons ensuite les problèmes que nous devons résoudre en fonction des cas ci-dessus. Tout d'abord, la première question est la suivante :

Lors de l'ajout, de la suppression ou de la modification de données au niveau de la couche Contrôleur, les données de type booléen sont renvoyées au front-end

Analyse dexemples dencapsulation de résultats unifiés de développement intégré Java SSM

Lors d'une requête au niveau de la couche Contrôleur, un seul objet est renvoyé. renvoyé au front-end.

Analyse dexemples dencapsulation de résultats unifiés de développement intégré Java SSM

Lors d'une requête au niveau de la couche Contrôleur, tous les objets sont renvoyés au front-end. l'activité se développe, nous devrons renvoyer de plus en plus de types de données. Pour les développeurs front-end, l'analyse des données est assez compliquée, donc pour le front-end, si l'arrière-plan peut renvoyer un résultat de données unifié, le front-end peut analyser d'une seule manière lors de l'analyse. Le développement deviendra plus facile.

Nous nous demandons donc si nous pouvons unifier les données de résultat renvoyées. Comment le faire spécifiquement ? L'idée générale est la suivante : Analyse dexemples dencapsulation de résultats unifiés de développement intégré Java SSM

Afin d'encapsuler les données de résultat renvoyées : créez une classe de modèle de résultat et encapsulez les données dans les données. attribut

  • Afin d'encapsuler le type d'opération auquel correspondent les données renvoyées et si l'opération a réussi : encapsuler le résultat de l'opération dans l'attribut code

  • Afin d'encapsuler le message d'erreur renvoyé après l'échec de l'opération : encapsuler le message spécial dans l'attribut message (msg)

  • Sur la base de l'analyse, nous pouvons configurer une classe de résultats de retour de données unifiée
public class Result{
	private Object data;
	private Integer code;
	private String msg;
}

Remarque : le nom de la classe de résultat et les champs de la classe ne sont pas fixes . Vous pouvez l'augmenter ou le diminuer selon vos besoins pour proposer plusieurs méthodes de construction pour un fonctionnement pratique. Analyse dexemples dencapsulation de résultats unifiés de développement intégré Java SSM

Implémentation du protocole de transmission de données frontale et de la couche de présentation

Encapsulation des résultats

Pour l'encapsulation des résultats, nous devons le traiter dans la couche de présentation, nous mettons donc la classe de résultats sous le package du contrôleur. Bien sûr, vous pouvez également la mettre. dans le package de domaine. Tout cela est possible. Comment implémenter l'encapsulation des résultats ? Les étapes spécifiques sont :

Étape 1 : Créer la classe Result

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 + '\'' +
                '}';
    }
}

Remarque :

Vous n'avez pas besoin d'écrire la méthode toString, cela le fera. être finalement converti au format json. Mais les méthodes getter et setter doivent être présentes !

Étape 2 : Définir le code retour Classe de code

//状态码
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;
}

Remarque : La conception constante dans la classe de code n'est pas fixe et peut être augmentée ou diminuée selon les besoins. Par exemple, la requête est subdivisée en GET_OK, GET_ALL_OK, GET_PAGE_OK, etc.

Étape 3 : Modifier la valeur de retour de la classe Controller

//统一每一个控制器方法返回值
@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);
    }
}

Comparer bookList avec null ici est dû au fait que si aucun résultat n'est trouvé dans toutes les requêtes, un null sera renvoyé directement au lieu d'une liste vide !

Lors de la vérification du livre en fonction de l'ID, s'il n'est pas trouvé, il renverra également un nul

Enfin notre structure de projet :

Étape 4 : Démarrer le test de service

Analyse dexemples dencapsulation de résultats unifiés de développement intégré Java SSM

Nos résultats de retour peut déjà être Un format unifié est renvoyé au front-end. Sur la base du résultat renvoyé, le frontal obtient d'abord la valeur dans

sous forme d'invite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer