Mybatis est un orm semi-automatique. En utilisant ce framework, la charge de travail est d'écrire des fichiers de mappage de mappage. Étant donné que l'écriture manuelle est facile à faire des erreurs, nous pouvons utiliser MyBatis-Generator pour nous aider à générer automatiquement des fichiers.
Ingénierie inverse
1. Qu'est-ce que l'ingénierie inverse
Mybaits exige que les programmeurs écrivent eux-mêmes des instructions SQL. Le responsable de MyBatis fournit l'ingénierie inverse pour générer automatiquement le code requis pour l'exécution de MyBatis (Mappen.java, Mappen.xml, Po ..)
Méthodes d'ingénierie inverse courantes utilisées dans le développement réel de l'entreprise:
Le code Java est généré en raison du tableau de la base de données.
2. Télécharger l'ingénierie inverse
mybatis-generator-core-1.3.2-bundle.zip
3. Comment utiliser (peut l'utiliser)
3.1 Exécuter l'ingénierie inverse
Plusieurs façons d'exécuter l'ingénierie inverse fournie dans la documentation officielle
Exécution du générateur MyBatis
Le générateur MyBatis (MBG) peut être exécuté de la manière suivante:
(1) à partir de l'invite de commande avec une configuration XML
(2) comme tâche de fourmi avec une configuration XML
(3) en tant que plugin maven
(4) à partir d'un autre programme Java avec une configuration XML
(5) à partir d'un autre programme Java avec une configuration basée sur Java
(6) Vous pouvez également générer du code via le plug-in Eclipse
Il est recommandé d'utiliser la méthode du programme Java (à partir d'un autre programme Java avec une configuration XML) et de ne pas compter sur des outils de développement.
Vous trouverez ci-dessous un projet qui génère des fichiers inversés, puis copie les fichiers générés automatiquement dans le projet d'origine (ceci est fait pour arrêter directement dans le fichier source et écraser le fichier avec le même nom). La capture d'écran du package et de la structure du projet importées est la suivante:
Comme indiqué
3.2 Générer des fichiers de configuration de code
GeneratorConfig.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <! doctype générateur ConfigurationPublic "- // Mybatis.org//dtd MyBatis Generator Configuration 1.0 // en "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <générateurconfiguration> < Value = "true" /> </ commentgenerator> <! - Informations sur la connexion de la base de données: classe de pilote, adresse de connexion, nom d'utilisateur, mot de passe -> <jdbcconnection driverclass = "com.mysql.jdbc.Driver" ConnectionUrl = "jdbc: mysql: // localhost: 3306 / mybatis" userid = "root" password = "1234"> </ jdbcconnection> <! - <jdbcconnection driverclass = "oracle.jdbc.oracledriver" ConnectionUrl = "jdbc: oracle: mince: @ 127.0.0.1: 1521: yycg" userrid = "yycg" password = "yycg"> </ jdbcc Analyser les types décimaux et numériques JDBC à entier, et quand il est vrai, analyser les types décimaux et numériques JDBC à java.math.bigdecimal -> <javatyperesolver> <propriété name = "ForceBigDeCimal -> <javamodeLenerator TargetPackage = "cn.edu.hpu.ssm.po" TargetProject = "./ Src"> <! - AutantAbpackages: Que le schéma soit le suffixe du pack Value = "true" /> </ javamodelgenerator> <! - TargetProject: l'emplacement où le fichier de carte du mappeur est généré -> <SqlMapGenerator TargetPackage = "cn.edu.hpu.ssm.mapper" TargetProject = "./ Src"> <! - AbleBpackages: si vous utilisez Schema comme Suffix du pack name = "activeubpackages" value = "false" /> </ sqlmapGenerator> <! - TargetPackage: emplacement de la génération d'interface de mappeur -> <javaclientGenerator type = "xmlmapper" ciblePackage = "cn.edu.hpu.ssm.mapper" cibleproject = ". Le package -> <propriété name = "ActiveBpackages" value = "false" /> </ javaclientGenerator> <! - Spécifiez la base de données -> <table tableName = "items"> </ table> <table tableName = "Orders"> </ table> <table tablename = "orderdetail"> </ table> <table tablename = "user"> </ table> <! tableName = "sys_user"> </ table> <table schema = "" tableName = "sys_role"> </ table> <table schema = "" tableName = "sys_permission"> </ table> <table schema = "" tableName = "Sys_User_Role"> </ table Schema = "" Tablename = "Sys_Role_> </ Table Schema =" -> <! - Certains champs de table nécessitent Java Type <Table Schema = "" TableName = ""> <ColumnOverride Column = "" javatype = "" /> </s table> -> </ context> </ generatorConfiguration>
3.3 Exécuter le programme générateur
Générateursqlmap.java:
Importer java.io.file; import java.util.arraylist; import java.util.list; import org.mybatis.generator.api.mybatisgenerator; import org.mybatis.generator.config.configuration; import org.mybatis.generator.config.xml.configurationparser; org.mybatis.generator.internal.defaultShellCallback; public Generators de classe QLMap {public void générateur () lève exception {list <string> warnings = new ArrayList <string> (); boolean overwrite = true; // charge de configuration file configFile = new File ("generatorconfig.xml"); ConfigurationPaSer CP = new ConfigurationPaSer (avertissements); configuration config = cp.parseconfiguration (configFile); DefaultShellCallback callback = new DefaultShellCallback (écrasant); MyBatisGenerator MyBatisGenerator = new MybatisGenerator (Null); main (String [] args) lève une exception {try {générateursqlmap générateursqlmap = new générateursqlmap (); générateursqlmap.generator ();} catch (exception e) {e.printStackTrace ();}}}Code généré:
3.4 Utilisation du code généré
Vous devez copier le code généré dans le projet généré dans votre propre projet. Copies les élémentsmapper.java et itemsmapper.xml, les éléments et les classes d'objets en exemple dans notre projet d'origine.
Méthodes de test dans les élémentsmapper
Package cn.edu.hpu.ssm.test; import static org.junit.assert.fail; import java.util.date; import java.util.list; import org.junit.before; import org.Junit.test; import org.springframework.context.applicationContext; import; org.springframework.context.support.classpathxmlapplicationcontext; import cn.edu.hpu.ssm.mapper.itemsmapper; import Cn.edu.hpu.ssm.po.items; importation cn.edu.hpu.ssm.Itemsexample; Itemsmapper itemsmapper; // annotation avant d'appeler cette méthode avant d'exécuter toutes les méthodes de test de cette classe @beforepublic void setup () lève une exception {applicationContext = new ClassPathXmlApplicationContext ("ClassPath: SpringConCond.xml"); itemsmapper = (itemsmapper) applicationContex.getBean ("ItemsMapper");} // delete @TestPublic TestDeleteByPrimaryKey () {fail ("pas encore implémenté");} // insérer @TestPublic void TestiNsert () {items items = new Éléments (); items.setName ("iPhone-5S"); items.setPrice (3999f); items.setdetail ("Authentic"); items.setpic ("sdasd.jpg"); items.setcreatetime (new Date ()); itemsmapper.insert (items);} // personnaliser les conditions de query @testpubl {ItemSExample ItemSExample = new ItemSExample (); // Construisez les conditions de requête via les critères élémentSExample.Criteria critères = itemSExample.createCriteria (); critères.AndNameEqualto ("TV"); // peut renvoyer plusieurs enregistrements <émières> list = itemsMapper.SelectyExample (itemSexample); for (int i = 0; i <list.size (); i ++) {items it = list.get (i); System.out.println (it.getId () + ":" + it.getName ());}} // requête basée sur la clé principale @TestPublic void testSelectByprimarykey () {items items = itemsMapper.SelectByPrimaryKey (1); System.out.Println (itets.getName ());} // à jour les données @TestPublic VOID VOID TESTUPDATEBYPRIMARYKEY () {// Mettez à jour tous les champs, vous devez d'abord vous interroger, puis mettre à jour les éléments items = itemsMapper.SelectByPrimaryKey (1); items.setName ("iPhone"); itemsMapper.updateByPrimaryKey (items); // Si le champ entrant n'est pas vide, utilisez cette méthode dans les mises à jour par lots. Il n'est pas nécessaire de s'interroger d'abord, puis de mettre à jour //itemsmapper.updatebyprimarykeyselective(record);}}Ce qui précède est le code automatique MyBatis ingénierie généré par le framework MyBatis qui vous est présenté par l'éditeur. J'espère que ce sera utile à tous!
Lectures recommandées de wulin.com:
Tutoriel d'apprentissage MyBatis Introduction (I) - Mybatis rapide Start
Analyse approfondie des champs MyBatis Oracle Blob Type
Mybatis Practice Dao et Mapper
SQL dynamique et requête associée dans la pratique de Mybatis