Dans les projets, vous rencontrerez généralement cette situation : la suppression logique et les associations multiples ne sont pas supprimées
Suppression logique (suppression logicielle) : La suppression logique consiste à mettre une marque de suppression sur les données à supprimer, généralement Utilisez un champ is_deleted pour indiquer si l'enregistrement de ligne a été supprimé (ou utilisez un champ d'état pour représenter le statut dit "supprimé"). Logiquement, les données sont supprimées, mais les données elles-mêmes existent toujours.
Cours recommandés : Tutoriel MySQL
a été supprimé de la page d'accueil et n'est pas affiché. non supprimé de la base de données, juste basé sur l'idée d'un champ d'état, 0 pour démarrer, 1 pour désactiver.
La suppression logique consiste donc simplement à modifier un champ nommé statut pour déterminer si la page frontale est affichée. Les données elles-mêmes n'ont pas été supprimées. Si vous souhaitez les restaurer, il vous suffit de modifier le statut. champ en arrière.
Idée :
Lors de l'écriture d'une requête SQL en XML, ajoutez une condition supplémentaire, le champ d'état dans la bibliothèque
SELECT * FROM md_drainage_basin <where> <if test="basinName != null"> and basin_name LIKE concat('%',#{basinName},'%')</if> <if test="state != null">AND state = #{state}</if> </where> ORDER BY sort_order
Puis, lorsque nous fournissons les données au front-end page, nous devons le faire nous-mêmes. Effectuez l'opération par défaut dans le code Java, car le front-end ne transmettra pas de code de statut dans la requête. L'arrière-plan génère
mdDrainageBasin.setState(0); List<MdDrainageBasin> list = mdDrainageBasinMapper.findByQuery(mdDrainageBasin);
par défaut et définit le statut. 0 à la classe d'entité, puis exécute la requête. De cette façon, le front-end ne voit que les données avec le statut 0
La suppression logique consiste à mettre à jour le code d'état à 1 et à appeler la mise à jour au lieu de la suppression. Cependant, compte tenu de la relation multi-table, telle que suspendue sous le bassin versant. Si un bassin versant est logiquement supprimé, le système d'eau ci-dessous sera également logiquement supprimé et non affiché. À ce stade, on peut juger que s'il existe un correspondant. système d'eau sous le bassin versant, il ne sera pas supprimé, sinon il sera supprimé
MdDrainageBasin mdDrainageBasin = mdDrainageBasinService.findById(id); List<MdWaterSystem> list = mdWaterSystemMapper.findByWater(mdDrainageBasin.getBasinCode()); if (list.size() > 0) { return ResponseMsgUtil.failure(); } else { mdDrainageBasin.setState(1); mdDrainageBasinService.update(mdDrainageBasin); return ResponseMsgUtil.success(mdDrainageBasin); }
Interrogez quel bassin versant et combien de systèmes d'eau il y a sous ce bassin versant en fonction de l'ID transmis depuis le front-end . S'il y a un système d'eau, ne le supprimez pas. S'il n'y a pas de système d'eau, supprimez-le
.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!