Dalam projek SpringBoot, jika MyBatis digunakan sebagai rangka kerja lapisan kegigihan, anda mungkin menghadapi masalah pemeta yang melaporkan pengecualian penuding nol apabila menggunakan suntikan automatik. Ini kerana SpringBoot tidak dapat mengenal pasti antara muka Mapper MyBatis dengan betul semasa suntikan automatik dan memerlukan beberapa konfigurasi tambahan.
Terdapat dua cara untuk menyelesaikan masalah ini:
1 Tambahkan anotasi pada antara muka Mapper
Tambahkan anotasi @Mapper pada antara muka Mapper untuk memberitahu SpringBoot bahawa antara muka ini ialah antara muka Mapper dan memerlukan. untuk diproksi. Contohnya adalah seperti berikut:
@Mapper public interface UserMapper { // ... }
2 Konfigurasikan laluan imbasan Mapper secara manual
Konfigurasikan laluan imbasan Mapper secara manual dalam application.properties atau application.yml untuk memberitahu SpringBoot mengimbas antara muka Mapper di bawah pakej mana. Contohnya adalah seperti berikut:
Dikonfigurasikan dalam application.properties:
mybatis.mapper-locations=classpath:mapper/*.xml
Dikonfigurasikan dalam application.yml:
mybatis: mapper-locations: classpath:mapper/*.xml
Perlu diingatkan bahawa mapper/*.xml di sini merujuk kepada Mapper antara muka Laluan di mana fail XML yang sepadan disimpan Jika anda menggunakan anotasi untuk mengkonfigurasi pernyataan SQL, anda tidak perlu mengkonfigurasi laluan fail XML.
Selepas mengkonfigurasi dalam dua cara di atas, anda boleh menyuntik antara muka Mapper dengan betul apabila menggunakan suntikan automatik.
Akhir sekali, jika anda telah melakukan semua perkara di atas dan masih mendapat hasil kosong, semak sama ada anda secara tidak sengaja tidak menyuntik pemeta dalam lapisan pengawal, contohnya
Jika ia adalah objek baharu, objek yang disuntik yang dirujuk bukanlah objek yang disuntik secara automatik ke dalam bekas spring, jadi ia akan dilaporkan sebagai kosong Anda perlu melakukan satu set persembahan penuh Suntikan @Autowird dalam lapisan pengawal juga
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah pemeta kosong secara automatik disuntik ke dalam projek springBoot idea. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!