À propos du générateur mybatis
MyBatis Generator (MBG) est un générateur de code MyBatis Mybatis et Ibatis. Il peut générer du code pour diverses versions de MyBatis et du code après Ibatis 2.2.0. Il peut introspecter les tables (ou tableaux) de la base de données, puis générer l'objet sous-jacent qui peut être utilisé pour accéder aux tables (multiples) des tables. De cette façon, aucun objet et fichiers de configuration ne sont nécessaires lors de l'interaction avec les tables de base de données. MBG résout des opérations CRUD (insérer, requérir, mettre à jour, supprimer) qui ont le plus grand impact sur les opérations de base de données. Vous avez toujours besoin de manuscrit SQL et d'objets sur la requête de la Fédération et les procédures stockées.
Le générateur MyBatis générera:
Les structures de table correspondantes de Java Pojos peuvent inclure:
Il y aura une relation d'héritage appropriée entre ces classes. Notez que le générateur peut être configuré pour générer des hiérarchies de différents types de POJOS. Par exemple, si vous préférez, vous pouvez choisir de générer un objet entité distinct pour chaque table.
MyBatis / Ibatis compatible avec les fichiers XML à cartographie SQL. MBG génère SQL en configuration pour des opérations CRUD simples pour chaque table. Les instructions SQL générées comprennent:
Selon la structure du tableau, les instructions générées varieront (par exemple, s'il n'y a pas de clé primaire dans le tableau, MBG ne générera pas la mise à jour par la méthode de la clé principale).
La classe Client Java utilisera l'objet ci-dessus de manière appropriée et est facultative lors de la génération de la classe client Java. MBG générera la classe client suivante pour mybatis 3.x:
Une classe d'interface de mappeur qui peut être utilisée avec Mybatis 3.x
MBG générera la classe client suivante pour Ibatis 2.x:
Classe DAO qui est conforme à Spring Framework.
Utilisez uniquement le DAO de l'API de mappage Ibatis SQL. Ce DAO peut être généré de deux manières suivantes: fournir SQLMAPClient par le biais de méthodes de construction ou d'injection de setter.
DAO est conforme au framework IBatis DAO (une partie facultative d'Ibatis, qui est obsolète, nous vous recommandons d'utiliser à la place Spring Framework).
Le générateur MyBatis peut bien fonctionner dans un environnement de développement itératif et agir comme une tâche de fourmi ou un plug-in maven dans un environnement de construction continu. Les choses importantes suivantes à retenir lors de l'exécution de MBG:
MBG fusionnera automatiquement XML qui existe déjà et est dupliquée avec le fichier nouvellement généré. MBG ne remplace pas les modifications que vous avez apportées au XML que vous avez généré. Vous pouvez l'exécuter encore et encore sans vous soucier de perdre vos modifications personnalisées. MBG remplacera tous les éléments XML générés dans les analyses précédentes.
MBG ne fusionne pas les fichiers Java, il peut écraser les fichiers existants ou enregistrer des fichiers nouvellement générés sur un nom unique différent. Vous pouvez fusionner ces changements manuellement. Lorsque vous utilisez le plugin Eclipse, MBG peut fusionner automatiquement les fichiers Java.
Utilisation de base
MBG s'appuie principalement sur un fichier de configuration XML. Tout d'abord, nous pouvons recréer un nouveau projet nommé MybatisGenerator, créer trois nouveaux packages nommés config, david.test et david.mbg. Le package de configuration stocke principalement les fichiers de configuration nécessaires dans Real Mybatis. Vous pouvez copier le MyBatis_demo_Config.xml dans le projet dans les chapitres précédents et le mettre dans ce répertoire, etc. pour les programmes de test. Comme son nom l'indique, David.test est de stocker les méthodes et les programmes de test couramment utilisés. Vous pouvez également utiliser la classe d'outils MyBatisUtils dans les chapitres précédents et créer la fonction principale correspondante à des fins de test. Et le dernier David.mbg est le XML que nous allons configurer aujourd'hui et le MBG génère le fichier de configuration.
Comme le montre la figure, nous avons créé un nouveau fichier de configuration appelé mbg_configuration.xml ci-dessous. Les détails sont les suivants:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype GeneratorConfiguration public "- // Mybatis.org//dtd Mybatis Generator Configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <GeneratorConcure> <classpathentry location = "./ lib / mysql-connector-java-5.1.26-bin.jar" /> <context id = "mybatisdemo-lingysql" cibleruntime = "mybatis3"> <! - Control Commentaires -> <commentgenerator> <! - Que ce soit tous les fichiers de communication générés automatiquement -> <propriété nom = "SuppressComs" Pour supprimer les horodatages de tous les fichiers générés automatiquement, par défaut à false -> <propriété name = "suppressDate" value = "true" /> </ commentgenerator> <! - Control Database -> <jdbccconnection driverclass = "com.mysql.jdbc.driver" ConnectionUrl = "JDBC: MySQL: //127.0.0.1: 3306 / MYBATIS_DB? CaractorCcoding = UTF8" UserId = "root" Password = "David0110" /> <JavatyPeresolver> <! - Convert Decimal and Number Types dans "False =" False " </ javatyperesolver> <! - Modèle correspondant à la table de base de données -> <javamodelgenerator targetpackage = "david.model" cibleProject = "src"> <propriété name = "activeubpackages" value = "true" /> <propriété name = "TrimString <SqlMapGenerator TargetPackage = "David.Mappers" TargetProject = "SRC"> <propriété name = "ActiveBpackages" Value = "True" /> </ SqlMapGenerator> <! - Contrôlez l'interface de Mappe name = "activeubpackages" value = "true" /> <propriété name = "MethodNameCalCulator" value = "Extended" /> </ javaclientGenerator> <! - Schéma pour votre base de données, le nom de table indique que le domaineobjectname correspond à votre nom de classe javabean, que l'exemple correspondant soit généré -> <table schema = "mybatian DomainObjectName = "Visitor" aperçuCountByExample = "false" activerupdateByExample = "false" ENableDEleteByExample = "false" ActivedElectByExample = "false" selectByExampleQueryId = "FALS <ignoreColumn Column = "Status" DelimitedColumnName = "FALSE" /> </ Table> </ Context> </ GeneratorConfiguration>
Vous pouvez remarquer que ce sont principalement ces nœuds
<ClassPathentry> => L'emplacement où le package de pilote JDBC est stocké peut être utilisé pour utiliser des chemins relatifs ou des chemins absolus. Dans cet exemple, le chemin relatif est utilisé.
<ftexed> => Respecté avec la configuration de toutes les tables dans une base de données, il peut y avoir plusieurs contextes, une configuration MySQL et un oracle de configuration.
Les principaux sous le nœud <context> sont:
<commentagenerator> => nœuds de générateur de commentaires, les 2 sous-tables de cet exemple représentent
SupprimAllComments => Il faut supprimer tous les fichiers de commentaires générés automatiquement
suppressDate => s'il faut supprimer les horodatages de tous les fichiers générés automatiquement, par défaut en faux
<jdbcconnection> => Informations sur la configuration de la connexion de la base de données
<JavatyPeresolver> => Convertir des décimaux et des types de nombres dans JDBC en Java.math.bigdeciaml Représentation
<JavamodelGenerator> => Configurez votre classe d'entité POJO, TargetPackage = "David.Model", correspondant à votre enregistrement, vous pouvez le nommer en fonction de l'entreprise réelle, TargetProject = "SRC". Dans l'environnement Eclipse, le chemin vers le dossier du projet et de la source est généralement appelé répertoire SRC. Votre package sera nouvellement créé dans ce répertoire. S'il ne s'agit pas de l'environnement Eclipse, la valeur ici doit être un chemin de système de fichiers réel. Si le chemin spécifié n'existe pas, une erreur sera signalée, car MBG ne créera pas le dossier correspondant en soi
<SqlMapGenerator> => Configurez pour générer l'entité correspondante Mappeur.xml. Pour Mapper3.x, nous devons taper = "xmlmapper"
<JavaclientGenerator> => Configurer génère la classe d'interface correspondante, correspondant à une série d'instructions SQL de méthode crud dans mapper.xml
<Bile> => Configurez la base de données correspondante, qui indique que le nom de classe de domaine (c'est-à-dire le nom de la classe d'entité) est souhaité générer. Dans cet exemple, j'ai fermé toutes les informations de génération d'exemples inutiles
Toutes les informations ci-dessus peuvent être vérifiées sur le site officiel des documents correspondants ou téléchargés dans mon fichier, avec les instructions de configuration correspondantes et les exemples d'application connexes. Télécharger le document
Après avoir configuré les informations ci-dessus, quelle est la dernière étape? Nous allons exécuter ce fichier de script. Il y a 4 façons dans la description officielle. Le premier consiste à la méthode de la ligne de commande, les deuxième et troisième sont générés via des outils tels que Ant ou Maven. Le dernier est généré via le code Java. Nous utilisons la méthode de génération via Java Barley. La méthode pour ajouter un script généré à la classe Demorun est la suivante:
private static void generatembgconfiguration () {/ * * mybatis est livré avec un outil de générateur pour générer la chose correspondante * / list <string> warnings = new ArrayList <string> (); booléen écrasant = true; File configFile = new File ("./ src / david / mbg / mbg_configuration.xml"); ConfigurationPaSer cp = new ConfigurationPaSer (avertissements); Configuration config = null; essayez {config = cp.parsEConfiguration (configFile); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (xmlParseRexception e) {// Bloc de catch généré automatiquement de TODO E.PrintStackTrace (); } DefaultShellCallback callback = new defaultShellCallback (écraser); essayez {mybatisGenerator mybatisgenerator = new MyBatisGenerator (config, rappel, avertissements); mybatisGenerator.generate (null); } catch (invalidConfigurationException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } Catch (InterruptedException e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } System.out.println ("La configuration MyBatis a été générée avec succès!"); } Après l'exécution, actualisez le projet, vous constaterez que le suivant génère magiquement la configuration principale pour vous. La section de la boîte rouge de la figure ci-dessous:
Enfin, utilisons les résultats générés automatiquement. Nous pouvons nous référer aux six premiers chapitres pour ajouter la méthode de test CRUD correspondante à Demorun comme suit:
/ * * Informations sur les visiteurs de requête * / public static void testGenerateAdd () {SQLSession Session = mybatisUtils.getsqlSession (); VisitOrmapper Voperation = Session.GetMapper (VisitOrmapper.Class); Visiteur Visiteur = nouveau Visitor (); Visitor.setVisitor_name ("Hello2"); Visitor.SetEmail ("[email protected]"); Visitor.setCreateTime (new Date ()); int count = voperation.insert (visiteur); session.Commit (); Mybatisutils.closesession (session); MybatisUtils.showMessages (crud_enum.add, count); } / * * Informations sur les visiteurs de requête * / public static void testGereateRery (int id) {sqlSession session = mybatisUtils.getsqlSession (); VisitOrmapper Voperation = Session.GetMapper (VisitOrmapper.Class); Visitor Visitor = voperation.SelectByPrimaryKey (ID); Mybatisutils.closesession (session); MybatisUtils.showMessages (crud_enum.query, 1); System.out.println (visiteur); } public static void testGenerateDelete (int id) {sqlSession session = mybatisUtils.getsqlSession (); VisitOrmapper Voperation = Session.GetMapper (VisitOrmapper.Class); int count = voperation.deleteByPrimaryKey (id); session.Commit (); Mybatisutils.closesession (session); MybatisUtils.showMessages (crud_enum.delete, count); } public static void testGereateUpDate (int id) {sqlSession session = mybatisUtils.getsqlSession (); VisitOrmapper Voperation = Session.GetMapper (VisitOrmapper.Class); Visitor Visitor = voperation.SelectByPrimaryKey (ID); System.out.println (visiteur); String name = visitor.getVisitor_name (); if (name.contains ("update")) {visitor.setVisitor_name (name.substring (0, name.indexof ("update"))); } else {visitor.setVisitor_name (name + "update"); } int count = voperation.updateByPrimaryKey (visiteur); session.Commit (); Mybatisutils.closesession (session); MybatisUtils.showMessages (crud_enum.update, count); System.out.println (visiteur); } Exécuter le programme de test et le résultat est
Pensez-vous que l'utilisation de cela vous a beaucoup aidé à améliorer votre efficacité, et vous n'avez pas à vous soucier des configurations lourdes. Au moins, vous n'avez pas à faire des étapes répétitives et inutiles. Soit ceux-ci aux outils pour faire ^ 0 ^. Bien sûr, dans une utilisation réelle, nous devrons peut-être modifier les noms d'informations de classe et d'interface correspondants après la génération. Bien sûr, ces charges de travail ne sont pas trop. J'espère que ces contenus seront utiles aux étudiants qui ont besoin de les configurer aujourd'hui.