Cet article était auparavant basé sur la reconstruction de SQLSessionFactoryBean, donc je reviendrai brièvement les opérations que j'ai faites:
Créez un nouveau SQLSessionFactoryBean, et le code initial est le même que MyBatis-Spring;
Refactor la méthode buildsqlSessionFactory (), extraire de nombreuses instructions IF dans un ensemble de petites méthodes, réserver des méthodes de configuration personnalisées et ajouter des méthodes de Getter d'attributs communs;
Extraire les interfaces d'usine de composants et fournir la classe d'outils de création de composants SQLSessionComponetFactorys, qui gère centralement de nouveaux xxx () diffusés à différents endroits pour faciliter le remplacement des composants.
Voyons maintenant comment se développer. Tout d'abord, créez un ScheMasQLSessionFactoryBean, héritez du SQLSessionFactoryBean refactorisé et synchronisez-le en une classe nouvellement créée dans la configuration XML:
classe publique schémasqlSessionFactoryBean étend SQLSessionFactoryBean {}Pour certaines extensions de fonction simples, telles que la définition du type de résultat par défaut et la numérisation de l'abréviation de type spécifié, je ne vais pas en discuter beaucoup ici. Ici, je vais me concentrer sur la façon de développer pour vérifier la configuration de SQLMapper à l'aide de XSD.
1. Écraser la méthode doparsesqlmapperresource () dans SQLSessionFactoryBean. La fonction de cette méthode consiste à analyser un fichier de configuration SQLMapper.
Bien sûr, pour la compatibilité, vous devez d'abord déterminer s'il s'agit de DTD. S'il est DTD, analysez-le selon la méthode d'origine, sinon l'analysez-la selon la méthode personnalisée:
package org.dysd.dao.mybatis.schema; import org.apache.ibatis.executor.errorcontex org.springframework.util.xml.xmlvalidationModeDetect DetectValidationMode (MapperLocation); if (mode == xmlvalidationModeDetect this.doparsesqlmapperresourcewithschema (configuration, mapperlocation);} catch (exception e) {lancez new NetestioException ("a échoué pour analyser la ressource de cartographie: '" + mapperlocation + "'", e);} enfin {errorContex doparsesqlmappersourcewithschema (configuration de la configuration, mappeur de ressources) {} private inttectValidationMode (Resource Mapperlocation) lève NetestioException {int mode = -1; try {xmlvalidationModeDetect Detector.DetectValidationMode (MapperLocation.getInputStream ());} Catch (Exception E) {Throw New NetestioException ("Échec de l'analyse de la ressource de cartographie: '" + MAPPPERLOCATION + "'", E);} Enfin {ErrorContext.instance (). Reset ();} Mode de retour;}}Ici, nous empruntons le XMLValidationModeDetector à Spring pour détecter le mode de vérification des fichiers de configuration XML. Il est logiquement simple, il suffit de lire une ligne par une. Avant le début du texte, si vous constatez qu'il existe une définition DTD, vous renverrez le mode DTD, sinon vous renverrez le mode XSD (en fait, non seulement le mode de détection emprunte le ressort, mais aussi l'espace de noms personnalisé derrière lui emprunte également le ressort).
À ce stade, l'analyse du fichier de configuration SQLMapper a été divisée en deux branches, qui sont compatibles avec l'analyse officielle de Mybatis, et l'analyse en mode XSD est naviguée vers la méthode doparsesqlmappersourcewithschema ().
2. Écrivez un fichier XSD pour la vérification de SQLMapper (nécessite une connaissance de base de XSD, veuillez vous référer aux notes d'étude sur la partie XML de ce blog)
1. Utilisez d'abord un outil XML pour convertir le fichier DTD de MyBatis en fichier XSD d'origine. Il existe de nombreux outils XML qui ont cette fonction. Vous pouvez rechercher en ligne.
Voici trois niveaux:
(1) Élément racine (élément de mappeur): correspondant à un fichier sqlmapper, il existe un attribut d'espace de noms, représentant une classification logique de ses éléments enfants. Il convient de noter que l'attribut d'espace de noms ici est différent de l'espace de noms XML. Le premier est une classification logique de MyBatis lui-même, et le second est utilisé pour définir les éléments XML et les contraintes d'attribut qui peuvent apparaître dans les fichiers XML.
(2) Éléments enfants de premier niveau (Cache | Cache-Ref | ResultMap | ParameTermap | SQL | INSERT | MISE À JOUR | DELETE | SELECT): Les éléments enfants de premier niveau du mappeur. Parce que le cadre MyBatis a un traitement différent des éléments enfants de premier niveau, il est utilisé comme niveau distinct. Étant donné qu'il ajoute, supprime et modifie principalement les instructions de vérification, il est appelé un élément d'instruction au niveau de l'instruction.
(3) Autres éléments (texte de configuration SQL, inclure | Trim | où | Définir | Foreach | Choisissez | If): Texte utilisé pour configurer les scripts SQL, ainsi que des éléments de script dynamique, appelées éléments de script de script
2. Faire les modifications suivantes basées sur la génération de fichiers XSD
(1) Ajouter un espace de noms, tel que:
<? xml version = "1.0" coding = "utf-8" standalone = "no"?> <xsd: schéma xmlns = "http://dysd.org/schema/sqlmapper" TargetNamespace = "http://dysd.org/schema/sqlmapper" xmlns: xsd = "http://www.w3.org/2001/xmlschema" élément "
(2) emballer l'élément de premier niveau dans un groupe de déclaration de groupe d'éléments
(3) Modifier l'élément de mappeur pour permettre aux éléments d'autres espaces de noms d'apparaître
(4) Emballage des éléments de script dynamique dans un groupe d'élément dynascriptgroup et permettant à d'autres éléments nommés apparaître
(5) Utilisez DynaScriptGroup pour remplacer lorsque des éléments de script dynamique apparaissent, tels que <lect> des éléments
(6) Certaines autres optimisations, telles que la définition de l'énoncé des trois valeurs, préparées et appelles qui peuvent être prises par StatementType comme types d'énumération:
<xsd: simpletype name = "statuttype"> <xsd: restriction base = "xsd: token"> <xsd: énumération value = "instruction" /> <xsd: énumération value = "préparé" /> <xsd: énumération valu
Les similaires incluent Paramettermode, JdbcType, Javatype, etc.
Ce qui précède est le résumé du fichier de configuration SQLMapper utilisé par XSD pour vérifier MyBatis. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!