Mybatis-Spring memungkinkan Anda untuk menyuntikkan pemetaan ke dalam kacang layanan. Saat menggunakan mapper, tidak apa -apa untuk memanggil mapper seperti memanggil DAO, tetapi pada saat ini Anda tidak perlu menyandikan implementasi DAO apa pun, karena mybatis akan melakukannya untuk Anda.
Dengan mapper yang disuntikkan, kode Anda tidak akan memiliki ketergantungan mybatis-spring dan dependensi mybatis. Ada mapper sederhana dalam aplikasi kami. Anda juga harus tahu bahwa mapper hanyalah antarmuka:
antarmuka publik userMapper {pengguna getUser (string userId); }Beginilah cara Anda menggunakan mybatis-spring untuk membuat pemetaan:
<bean id = "usermapper"> <name properti = "sqlSessionFactory" ref = "sqlSessionFactory" /> <properti name = "mapperInterface" value = "sample.usermapper" /> </ bean>
Sekarang mapper Anda siap menyuntikkan objek layanan:
<bean id = "fooService"> <name properti = "usermapper" ref = "usermapper"/> </ bean>
Catatan: Nama kelas penuh antarmuka mapper sesuai dengan namespace dari file konfigurasi mapper XML.
Tentang mapperfactorybean
Kelas proxy yang dibuat oleh MapperFactoryBean mengimplementasikan antarmuka mapper (seperti pada contoh di atas: usermapper) dan disuntikkan ke dalam aplikasi. Karena agen dibuat di lingkungan yang dijalankan, mapper yang ditentukan harus berupa antarmuka. Alih -alih kelas implementasi konkret.
Tidak perlu mendaftarkan semua pemetaan di file konfigurasi XML Spring. Sebagai gantinya, Anda dapat menggunakan MappersCannerConfigurer, yang akan mencari pemetaan di bawah Classpath dan secara otomatis membuatnya menjadi MapperFactoryBeans. Untuk membuat MappersCannerConfigurer, Anda dapat menambahkan kode berikut ke konfigurasi Spring:
<Bean> <propery name = "Basepackage" value = "org.mybatis.spring.sample.mapper"/> </tean>
Properti Basepackage memungkinkan Anda untuk mengatur jalur paket dasar untuk file antarmuka mapper. Anda dapat mengatur lebih dari satu jalur paket menggunakan titik koma atau koma sebagai pemisah. Setiap mapper akan dicari secara rekursif di jalur paket yang ditentukan.
Perhatikan bahwa tidak perlu menentukan SQLSessionFactory atau SQLSessionTemplate, karena MappersCannerConfigurer akan membuat MapperFactoryBean dan kemudian secara otomatis merakitnya. Namun, jika Anda menggunakan lebih dari satu sumber data (dan karenanya beberapa SQLSessionFactory), rakitan otomatis mungkin gagal. Dalam hal ini, Anda dapat menggunakan properti SQLSessionFactory atau SQLSessionTemplate untuk mengatur pabrik/templat yang benar.
MappersCannerConfigurer mendukung penyaringan untuk membuat pemetaan dengan antarmuka atau anotasi pembuatan tertentu. Properti AnnotationClass menentukan nama anotasi yang akan dicari. Properti MarkerInterface menentukan antarmuka induk yang akan dicari. Jika keduanya ditentukan, mapper yang ditambahkan ke antarmuka cocok dengan kedua kriteria. Secara default, kedua properti itu nol, sehingga semua antarmuka yang diberikan dalam paket dasar dapat dimuat sebagai pemetaan.
Mapper yang ditemukan akan dinamai menggunakan kebijakan penamaan default Spring untuk komponen deteksi otomatis. Artinya, jika tidak ada anotasi yang ditemukan, ia menggunakan nama kelas mapper yang tidak memenuhi syarat mapper. Tetapi jika Anda menemukan @Component atau JSR-330 @bernama anotasi, itu akan mendapatkan namanya.