Intégration du printemps et de Mybatis
Idées d'intégration
Le printemps doit gérer SQLSessionFactory via un singleton.
Spring et MyBatis s'intègrent pour générer des objets proxy et utiliser SQLSessionFactory pour créer SQLSession. (L'intégration Spring et Mybatis sont automatiquement terminées)
Les mappeurs de la couche de persistance doivent être gérés par le printemps.
Intégrer l'environnement
Créer un nouveau projet Java (près de la structure d'ingénierie développée réelle)
Package de pot:
Package de pot Mybatis3.2.7
Spring3.2.0 Pack Package
Package d'intégration MyBatis et Spring: L'intégration précoce d'Ibatis et de printemps a été fournie par le printemps, et maintenant l'intégration MyBatis et Spring est fournie par MyBatis.
Tous les packages en pot (y compris SpringMVC)
Structure d'ingénierie
Étape 1: Intégrer et configurer SQLSessionFactory
Configurer SQLSessionFactory et la source de données dans ApplicationContext.xml
SQLSessionFactory est sous le package d'intégration de MyBatis et Spring.
<! - Chargement du fichier de configuration -> <contexte: propriété-placeholder location = "classpath: db.properties" /> <! - Source de données, utilisez dbcp -> <bean id = "dataSource" destrement-méthod = "close"> <propriété name = "driverclassname" value = "$ {jdbc.driver}" /> <propriété name = "url" Value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.Username}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> <propriété name = "maxactive" value = "10" /> <propriété name = "maxidle" value = "5" /> </ beeb SQLSESSInfactory -> <bean id = "SqlSessionFactory"> <! - Chargez le fichier de configuration MyBatis -> <propriété name = "configLocation" value = "MyBatis / SqlMapConfig.xml" /> <! - Source de données -> <propriété Name = "DataSource" Ref = "DataSource" /> </fEUDéveloppement original (après intégration avec le printemps)
sqlmap / user.xml
Charger user.xml dans sqlmapconfig.xml
DAO (implémentation de la classe Héritage SqlSessionDaOSupport)
Auparavant, la classe d'implémentation de l'interface DAO nécessaire pour injecter SQLSESSInfactory et l'injecter via le printemps.
Ici, nous utilisons Spring pour déclarer la méthode de configuration et configurer le bean de DAO:
Laissez userdaoimpl implémenter la classe hériter sqlSessionDaosupport
Configurer DAO
Configurez l'interface DAO dans ApplicationContext.xml
<! - Interface DAO originale -> <bean id = "userdao"> <propriété name = "sqlSessionFactory" ref = "sqlSessionFactory" /> </ank>
Procédures de test
source_folder / userdaoimpltest.javapublic class userdaoimplTest {private applicationContext applicationContext; // get Spring Container dans la méthode de configuration @beforepublic void setup () lève exception {applicationContext = lève une exception {userdao userdao = (userdao) applicationContext.getBean ("userdao"); // appelez l'utilisateur utilisateur utilisateur = userdao.finDuserById (1); System.out.println (user);}}Développement des agents de mappeur
UserMapper.xml et userMapper.java
Copiez simplement le projet précédent et supprimez le chemin du package.
Créer des objets proxy via MapperFactoryBean
Étant donné que UserMapper n'est pas un type d'interface, vous devez utiliser MapperFactoryBean pour générer un type d'interface
Problème avec cette méthode:
Il doit être configuré pour chaque mappeur, gênant.
Scanning de mappeur via MapperscannerConfigurer (recommandé)
* Après avoir configuré le chemin de balayage du mappeur via la propriété BasEpackage, il n'est pas nécessaire de configurer le chemin de balayage dans sqlmapperConfig.xml.
La propriété SQLSessionFactoryBeanName est utilisée ici car si la propriété SQLSessionFactory est configurée, le fichier de configuration de la base de données et la configuration de la source de données ne seront pas chargés en premier (DB.Properties)
Code de test
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 ..)
Dans le développement réel de l'entreprise, une méthode d'ingénierie inverse couramment utilisée: générer du code Java en raison du tableau de la base de données.
Télécharger l'ingénierie inverse
Comment utiliser (peut utiliser) exécuter l'ingénierie inverse
Il est recommandé d'utiliser la méthode du programme Java et de ne pas s'appuyer sur des outils de développement.
Générer des fichiers de configuration de code (4 places qui doivent être modifiées)
Emplacement où la classe PO est générée: cn.itcast.ssm.po
L'emplacement où le fichier de mappage du mappeur est généré: cn.itcast.ssm.mapper
L'emplacement de l'interface de mappel généré: cn.itcast.ssm.mapper
Spécifiez la table de la base de données:
<table tableName = "items"> </ table> <table tableName = "orders"> </s table> <table tableName = "OrderDetail"> </ Table> <table tableName = "User"> </ Table> <? xml version = "1.0" Encoding = "UTF-8"? Configuration du générateur 1.0 // en "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <générateur-configuration> < name = "suppressallComments" value = "true" /> </roregenerator> <! - Informations sur les connexions de 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 = "mysql"> </ jdbcconnection> <! - <jdbcconnection driverclass = "oracle.jdbc.oracledriver" connectionUrl = "jdbc: oracle: mince: @ 127.0.0.1: 1521: yycg" userid = "yycg" mot de passe = "yycg"> </ jdbconneuse> <! -! Les types décimaux et numériques Faux, JDBC se résolvent à entier. Lorsque cela est vrai, les types décimaux et numériques JDBC se résument à java.math.bigdecimal -> <javatyperesolver> <propriété name = "ForceBigDecimals" value = "false" /> </ javatyperesolver> <! - TargetProject: emplacement de la classe PO générée -> <javamodelGenerator TargetPackage = "cn.itcast.ssm.po" TargetProject = "./ Src"> <! - ActiveBpackages: s'il faut utiliser le schéma comme suffixe du package -> <propriété name = "ActiveBpackages" Value = "false" /> <! - Espaces avant et après la valeur retournée de la database est nettoyée -> <propriété Nom = "Trimstrings" /> </ javamodelgenerator> <! - TargetProject: où le fichier de carte du mappeur est généré -> <sqlmapGenerator TargetPackage = "cn.itcast.ssm.mapper" TargetProject = "./ SRC"> <! - ActiveBpackages: que ce soit le schéma " /> </ sqlmapGenerator> <! - TargetPackage: emplacement de la génération d'interface de mappeur -> <javaclientGenerator type = "xmlmapper" ciblePackage = "cn.itcast.ssm.mapper" TargetProject = "./ src"> <! - perdAbPackages: If use schema comme le suffix du pack Value = "false" /> </ javaclientGenerator> <! - Spécifiez la table de base de données -> <table tableName = "items"> </ table> <table tableName = "Orders"> </ table> <Table TableName = "OrderDetail"> </ Table> <Table TableName = "User"> </pall
Exécuter le générateur
Code généré
Utiliser le code généré
Vous devez copier le code généré dans le projet généré dans votre propre projet.
Méthodes de test dans les élémentsmapper
// Custom Condition Query @TestPublic void TestSelectByExample () {itemSExample ItemSExample = new ItemSExample (); // Construire les conditions de requête via les critères ItemSExample.Criteria Criteria = ItemSExamp itementsMapper.SelectByExample (itemSExample); System.out.println (list);} // query @TestPublic void en fonction de la clé principale TestSelectByprimarykey () {éléments items = itementsMapper.SelectByPrimaryKey (1); System.out.println (item Nouveaux éléments (); items.setName ("mobile"); items.setPrice (999f); itemsMapper.insert (items);} // mettent à jour les données @TestPublic void TestupDateByPrimaryKey () {// Mettez à jour tous les champs, vous avez besoin de les interroger d'abord et de mise à jour des éléments = ItemSmapper.SelectBypriaryKey (1); Cup "); 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 une brève analyse de l'intégration et de l'ingénierie inverse du printemps et des mybatis, ce qui, je l'espère, vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!