"Système de gestion des étudiants" mais", ou j'étais responsable de tout le code et des documents par moi-même. Au début, j'étais tellement bouleversé que j'ai vomi du sang. C'est aussi la raison pour laquelle certaines fonctions de la version Web ultérieure n'ont pas été complétées.
JavaSwing utilise MyBatis +. Framework Spring ici Après combinaison, j'ai découvert plus tard que l'utilisation du framework Spring semble être une erreur dans les programmes développés avec Swing.
De plus, il peut y avoir des bugs logiques inconnus dans la version JavaSwing.
Affichage des fonctions1. Module de connexion3.
4. Gestion de classe Module
Ajout de classe
Gestion de classe 5, Gestion des notesStatistiques de note
6, Version WebCliquez pour accéder au navigateur
Instructions
Utilisez IDEA pour ouvrir le projet. La structure du projet est la suivante : Lorsque vous démarrez le projet, exécutez LoginFrm dans le package de vue
http://localhost:8080 网址
Rencontrés lors de l'utilisation de Spring pour l'injection de dépendances. Problème
à com.view.LoginFrm.loginAct(LoginFrm.java:187)
à com.view.LoginFrm$2.actionPerformed(LoginFrm.java :96)
Après une longue recherche sur Baidu, je n'ai pas trouvé le problème. Après avoir exclu le problème d'une mauvaise écriture du fichier de configuration Spring ou de la non-ajout de l'annotation @Service, j'ai trouvé une explication sur Internet. , comme suit :
La raison est la suivante : le nouveau thread n'est pas dans le conteneur Spring, il ne peut donc pas obtenir l'objet bean dans Spring
JavaSwing n'est pas thread-safe Certains endroits du projet sont multithread et de nombreux threads d'interface utilisateur s'exécutent simultanément. dedans, donc dans ces injections utilisant Spring dans les threads échoue car ce ne sont pas des threads gérés par Spring
Et Spring ne permet pas l'utilisation d'annotations pour injecter des dépendances dans des situations multithread, nous ne pouvons donc obtenir que manuellement l'objet bean que nous je veux, le code est le suivant :En fait, il peut aussi être géré en configurant le pool de threads, mais je ne connais pas Swing et je ne sais pas combien de threads il a lors de son exécution. Ce problème était quelque chose auquel je ne m'attendais pas au début. Si je l'avais su, je n'aurais pas utilisé Spring sur Swing... car je dois obtenir manuellement les dépendances pour chaque classe de couche de vue, ce qui est bien pire que en utilisant moi-même un mode singleton, il n'y a aucune différence dans l'obtention des dépendances de MyBatis, mais utiliser Spring est plus gênantProblèmes avec Mybatis utilisant HashMap comme jeu de résultatsprivate final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");Copier après la connexion
Lors de l'écriture de la méthode pour trouver la connexion spécifiée, j'ai utilisé. List
@Results({
@Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
@Result(property = "value",column = "attendance_date",jdbcType = JdbcType.VARCHAR )})
Mais une erreur de conversion de format s'est affichée. J'ai donc affiché les résultats de la requête sur la console et j'ai découvert que les résultats ressemblaient à ceci
[{value=2018-05-17, key=1}, { valeur = 17/04/2018, clé = 1}, {value = 18/04/2018, clé = 1}, {value = 19/04/2018, clé = 3}, {value = 20/04/2018, key= 1}, {value=2018-04-21, key=1}, {value=2018-05-03, key=1}]
La valeur dans HashMap est passée de la forme de chaîne JSON à xxx =xxx Sous la forme du résultat ci-dessus. Ne demandez pas pourquoi vous n'utilisez pas le fichier XML. Je n'avais pas assez de temps à ce moment-là, j'ai donc simplement utilisé des annotations pour plus de commodité. Solution :
Retraitez la valeur du résultat ci-dessus et attribuez-la à HashMap
Supprimer. l'association avec les clés étrangères Problèmes qui surviennent lors de l'extraction des données
La couche Service du projet signale les erreurs suivantes :
Impossible de supprimer ou de mettre à jour une ligne parent : une contrainte de clé étrangère échoue (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id `) RÉFÉRENCES `s_student` (`id`)); l'exception imbriquée est java.sql.SQLIntegrityConstraintViolationException : impossible de supprimer ou de mettre à jour une ligne parent : une contrainte de clé étrangère échoue (`ttms`.`s_attendance `, CONTRAINTE `student_attendance_foreign` FOREIGN KEY (`student_id`) RÉFÉRENCES `s_student` (`id`))J'ai vérifié le message d'erreur et j'ai découvert que le problème venait de la couche Dao. Il y avait un problème avec une instruction de suppression. . Après avoir analysé la raison, j'ai découvert qu'une association de clé étrangère avait été définie. Cela nous empêche de supprimer les données.
Solution :
Définissez la clé étrangère pour qu'elle soit invalide avant de supprimer les données, comme suit :
set Foreign_key_checks = 0;Ensuite, vous pouvez exécuter l'instruction de suppression à ce moment-là
Après la suppression, définissez la clé étrangère key pour être valide, comme suit :
set Foreign_key_checks = 1;Cela supprimera parfaitement cet enregistrement.
JavaWeb
Comme mentionné précédemment, le Web est un produit semi-fini. Les fonctions qu'il a implémentées incluent principalement les modules fonctionnels suivants : connexion, déconnexion, changement de mot de passe, gestion des étudiants, gestion des classes et gestion des scores. De plus, la base de données qu'il utilise est la même que la version JavaSwing, donc leurs données précédentes sont réellement interopérables.
Résumé : Bien que la page soit un peu moche, elle peut être utilisée comme modèle pour un développement continu.
Affichage des fonctions
2. Gestion des étudiants
Liste des étudiants
Ajout des étudiants
3.
Classe ajoutée
4. Respecter les statistiques 说 Utiliser la descriptionDiagramme de la structure du projet :
Mettez directement dans la classe DemoApplication et faites un clic droit pour démarrer.
Problèmes rencontrésProblèmes rencontrés lors de l'utilisation de JPA pour mettre à jour la base de donnéesLors de l'utilisation de Spring Data JPA pour faire le contenu de la couche de persistance côté Web, une erreur a été rencontrée, comme suit : Exécution d'une mise à jour/ requête de suppression
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!