Kata Pengantar: Ini adalah reka bentuk kursus untuk tahun kedua (masih sistem pengurusan pelajar...). adalah 4 orang setiap Ia telah dilakukan bersama-sama dengan pasukan, tetapi, perhatikan ini "tetapi", saya masih bertanggungjawab untuk semua kod dan dokumen... Saya pada dasarnya menulis kod dan dokumen sendiri saya sangat bimbang pertama saya muntah darah Inilah sebabnya beberapa fungsi versi Web kemudiannya Sebab tidak disiapkan.
Projek ini dibahagikan kepada aplikasi desktop GUI yang ditulis dalam JavaSwing dan aplikasi Web separuh siap Rajah berikut menunjukkan struktur fungsi keseluruhan projek
JavaSwing menggunakan gabungan rangka kerja MyBatis + Spring Kemudian saya mendapati bahawa menggunakan rangka kerja Spring nampaknya merupakan satu kesilapan dalam program yang dibangunkan dengan Swing.
Selain itu, mungkin terdapat beberapa pepijat logik yang tidak diketahui dalam versi JavaSwing.
1. Modul log masuk
Modul tetapan sistem
3. Modul pengurusan pelajar
Tambahan pelajar
Senarai pelajar
4. Modul pengurusan kelas
Tambahan kelas
Pengurusan kelas
5
Statistik skor 6 Versi webKlik untuk melompat ke pelayarhttp://localhost:8080 网址
at com.view.LoginFrm.loginAct(LoginFrm.java:187)
at com.view.LoginFrm$2 .actionPerformed(LoginFrm .java:96)
Selepas mencari di Baidu untuk masa yang lama tetapi tidak dapat menemui masalah, saya menemui penjelasan dalam talian selepas menolak isu seperti penulisan konfigurasi Spring yang salah fail atau kegagalan untuk menambah anotasi @Service , seperti berikut:
Menggunakan @Autowired dalam multi-threading sentiasa gagal untuk mendapatkan kacang.
Sebabnya ialah: benang baharu tiada dalam bekas Spring, jadi objek kacang dalam Spring tidak boleh diperoleh
JavaSwing tidak selamat untuk benang Sesetengah tempat dalam projek dijalankan berbilang benang , dan banyak utas UI Ia berjalan serentak di dalamnya, jadi menggunakan suntikan Spring dalam utas ini gagal kerana ia bukan utas diurus Spring
dan Spring tidak membenarkan anotasi digunakan untuk menyuntik kebergantungan dalam situasi berbilang benang , jadi kita hanya boleh secara manual Untuk mendapatkan objek kacang yang kita inginkan, kodnya adalah seperti berikut:
private final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");
Malah, ia juga boleh diuruskan dengan mengkonfigurasi kumpulan benang, tetapi saya tidak biasa dengan Swing dan don tidak tahu berapa banyak benang yang ada semasa berjalan.
Masalah ini adalah sesuatu yang saya tidak jangkakan pada mulanya Jika saya tahu mengenainya, saya tidak akan menggunakan Spring on Swing...kerana saya perlu mendapatkan kebergantungan secara manual untuk setiap kelas lapisan paparan. yang jauh lebih teruk daripada menggunakannya sendiri. Tiada perbezaan dalam mendapatkan kebergantungan MyBatis dalam mod tunggal, tetapi menggunakan Spring lebih menyusahkan
Masalah dengan Mybatis menggunakan HashMap sebagai set hasil
Apabila menulis kaedah untuk mencari log masuk yang ditentukan, saya menggunakan List
@Results({
@Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
@Result(property = "value",column = " attendance_date",jdbcType = JdbcType.VARCHAR)})
Tetapi ia menunjukkan ralat penukaran format, jadi saya mengeluarkan hasil pertanyaan pada konsol dan mendapati keputusannya adalah seperti ini
[{value=2018-05-17, key=1}, {value=2018-04-17, key=1}, {value=2018-04-18, key=1}, {value= 2018- 04-19, key=3}, {value=2018-04-20, key=1}, {value=2018-04-21, key=1}, {value=2018-05-03, key= 1} ]
Nilai dalam HashMap telah berubah daripada bentuk rentetan JSON kepada bentuk xxx=xxx Nilai atribut sifat sepadan dengan atribut kelas entiti, tetapi kunci dan vlaue dalam HashMap tidak boleh dikira Atribut (saya fikir salah), jadi Mybatis akan menetapkan nama atribut dengan sendirinya pada masa ini, jadi ia menjadi hasil di atas. Jangan tanya mengapa ia tidak dalam bentuk fail xml saya tidak mempunyai masa yang mencukupi pada masa itu, jadi saya hanya menggunakan anotasi untuk kemudahan
Penyelesaian:
Proses semula. nilai hasil di atas dan tetapkan kepada HashMap
Masalah yang berlaku apabila memadamkan data yang dikaitkan dengan kunci asing
Lapisan perkhidmatan dalam projek melaporkan ralat seperti berikut:
Semak maklumat ralat, masalahnya terletak pada lapisan Dao Terdapat masalah dengan kenyataan padam Selepas menganalisis sebabnya, didapati perkaitan kunci asing ditetapkan, yang menghalang kita daripada memadam data. Penyelesaian: Tetapkan kunci asing menjadi tidak sah sebelum memadamkan data, seperti berikut:Tidak boleh memadam atau mengemas kini baris induk: kekangan kunci asing gagal (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) RUJUKAN `s_student` (`id`)); sql.SQLItegrityConstraintViolationException: Tidak dapat memadam atau mengemas kini baris induk: kekangan kunci asing gagal (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KUNCI (`student_id`) RUJUKAN `id`student)`(`id`student)`
tetapkan foreign_key_checks = 0;Kemudian anda boleh melaksanakan kenyataan padam pada masa ini Selepas pemadaman, tetapkan kunci asing menjadi sah, seperti berikut:
set foreign_key_checks = 1;Dengan cara ini Rekod ini telah dipadamkan dengan sempurna. JavaWebJavaWeb Gabungan rangka kerja SpringBoot + Spring Data JPA digunakan di sini Halaman menggunakan Thymeleaf untuk paparan data Terdapat halaman statistik pada halaman yang menggunakan ECharts untuk visualisasi data. Seperti yang dinyatakan sebelum ini, Web ialah produk separuh siap Fungsi yang telah dilaksanakan terutamanya termasuk modul berfungsi berikut: log masuk, log keluar, penukaran kata laluan, pengurusan pelajar, pengurusan kelas dan pengurusan skor. Di samping itu, pangkalan data yang digunakan adalah sama dengan versi JavaSwing, jadi data sebelumnya mereka sebenarnya boleh dikendalikan. Ringkasan: Walaupun halaman itu agak hodoh, ia boleh digunakan sebagai templat untuk pembangunan berterusan. Paparan fungsi1 antara muka log masuk 2. Pengurusan pelajarSenarai pelajar Tambahan pelajar 3. Pengurusan kelasSenarai kelas Tambahan kelas 4 Statistik markah <.>
Arahan penggunaan
Untuk bermula, masukkan sahaja kelas DemoApplication dan klik kanan untuk bermula .
Masalah yang dihadapi
Apabila menggunakan Spring Data JPA untuk melakukan kandungan lapisan kegigihan di sebelah Web, ralat telah ditemui. Seperti berikut:
Melaksanakan pertanyaan kemas kini/padamSelepas mencari di Baidu, saya mendapati bahawa ia adalah JPA Jika anda melakukan operasi kemas kini atau memadam, anda perlu menggunakan Dao atau Perkhidmatan Anotasi @Transactional ditambahkan pada lapisan, yang bermaksud bahawa ini ialah operasi peringkat transaksi Ini bersamaan dengan spesifikasi penggunaan JPA, kerana JPA memerlukan operasi kemas kini dan pemadaman tidak boleh dilakukan tanpa transaksi. sokongan.
Atas ialah kandungan terperinci Menganalisis kes sistem pengurusan pelajar yang dilaksanakan di Jawa.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!