Selepas menghuraikan fail konfigurasi global, langkah seterusnya ialah menghuraikan fail Mapper, yang dihuraikan melalui XMLMapperBuilder
Kaedah parse() XMLMapperBuilder:
public void parse() { if (!configuration.isResourceLoaded(resource)) { configurationElement(parser.evalNode("/mapper")); configuration.addLoadedResource(resource); bindMapperForNamespace(); } parsePendingResultMaps(); parsePendingCacheRefs(); parsePendingStatements(); }
Jika fail Mapper semasa belum dimuatkan, panggil kaedah configurationElement() untuk menghuraikan fail Mapper
ditambahkan pada koleksi Configuration.loadedResources untuk mengelakkan pemuatan berulang
Dapatkan antara muka Mapper yang sepadan dengan fail Mapper dan daftarkannya
Mengendalikan penghuraian gagal <resultMap>
tag
Mengendalikan penghuraian gagal <cache-ref>
tag
Kendalikan penghuraian Pernyataan SQL yang gagal
Fokus pada kaedah konfigurasiElement() kelas XMLMapperBuilder
The kaedah configurationElement() kelas MLMapperBuilder:
private void configurationElement(XNode context) { try { String namespace = context.getStringAttribute("namespace"); if (namespace == null || namespace.isEmpty()) { throw new BuilderException("Mapper's namespace cannot be empty"); } builderAssistant.setCurrentNamespace(namespace); cacheRefElement(context.evalNode("cache-ref")); cacheElement(context.evalNode("cache")); parameterMapElement(context.evalNodes("/mapper/parameterMap")); resultMapElements(context.evalNodes("/mapper/resultMap")); sqlElement(context.evalNodes("/mapper/sql")); buildStatementFromContext(context.evalNodes("select|insert|update|delete")); } catch (Exception e) { throw new BuilderException("Error parsing Mapper XML. The XML location is '" + resource + "'. Cause: " + e, e); } }
Menghuraikan atribut ruang nama bagi fail Mapper
Menghuraikan <cache-ref>
tag, yang digunakan untuk merujuk cache Cache lain
Menghuraikan tag <cache>
Teg ini digunakan untuk mendayakan cache peringkat kedua Mybatis secara lalai. Dalam kaedah ini, selesaikan kepada kelas MapperBuilderAssistant untuk melengkapkan penciptaan Cache , disimpan dalam koleksi Configuration.caches, kunci koleksi ialah ruang nama dan nilainya ialah objek Cache
, teg ini telah ditinggalkan, secara amnya gunakan <parameterMap>
Nama kelas yang mentakrifkan parameter parameterType
. Tag ini ialah peta hasil. Semua sub-tag di bawah tegnya dihuraikan dan disimpan dalam objek ResultMap kemudian menghuraikan sub-teg teg resultMap, termasuk teg seperti <resultMap>
Teg ini menghasilkan objek ResultMapping, kemudian dapatkan atribut seperti id extends, bina objek ResultMapResolver dan buat objek ResultMap untuk disimpan Koleksi .resultMaps <constructor>、<id>、<result>、<collection>
terlebih dahulu. dan kemudian menghuraikan teg <select>、<insert>、<update>、<delete>
, disimpan ke koleksi Configuration.keyGenerators, dan akhirnya mencipta objek SqlSource melalui kaedah LanguageDriver.createSqlSource() untuk membina objek MappedStatement sqlSource of MappedStatement merekodkan pernyataan sql dan sqlCommandTy. jenis pernyataan SQL, yang disimpan dalam koleksi Configuration.mappedStatements <include>
<selectKey>
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi fail pemetaan Mapper.xml untuk permulaan Java Mybatis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!