Frühlings- und MyBatis -Integration
Integrationsideen
Der Frühling muss SQLSessionFactory über einen Singleton verwalten.
Spring und MyBatis integrieren sich, um Proxy -Objekte zu generieren und SQLSessionFactory zu verwenden, um SQLSession zu erstellen. (Die Integration der Spring- und MyBatis -Integration werden automatisch abgeschlossen)
Die Mapper der Persistenzschicht müssen nach Frühling verwaltet werden.
Die Umgebung integrieren
Erstellen Sie ein neues Java -Projekt (in der Nähe der tatsächlichen entwickelten Ingenieurstruktur)
Jar -Paket:
MyBatis3.2.7 Jar -Paket
Spring3.2.0 Jar -Paket
MyBatis und Spring Integration Package: Frühe Ibatis- und Frühlingsintegration wurde von Spring bereitgestellt, und jetzt werden MyBatis und Spring Integration von MyBatis bereitgestellt.
Alle JAR -Pakete (einschließlich SpringMVC)
Ingenieurstruktur
Schritt 1: Integrieren und konfigurieren SQLSessionFactory
Konfigurieren Sie SQLSessionFactory und Datenquelle in applicationContext.xml
SQLSessionFactory steht unter dem Integrationspaket von MyBatis und Spring.
<!-Laden der Konfigurationsdatei-> <CONTEXT: Eigenschafts-Placeholder location = "classPath: db.properties" /> <!-Datenquelle, verwenden Sie DBCP-> <bean id = "dataSource" Destroy-method = "Close"> <Eigenschaft name = "TRAVERCLASSNAM" value = "$ {JDBC.DBC.DBC.DBC.DBC.DBC.DBC.DBRIS. value = "$ {jdbc.url}" /> <Eigenschaft name = "userername" value = "$ {jdbc.username}" /> <Eigenschaft name = "password" value = "$ {jdbc.password}" /> <Property name = "MaxActive" value = "10" /> <Eigenschaft = "Maxidle". SQLSESINFACTORY-> <bean id = "Originalentwicklung (nach Integration mit Frühling)
sqlmap/user.xml
Laden Sie user.xml in sqlmapconfig.xml
DAO (Implementierung der Klassenerbschaft SQLSessionDaOSupport)
Zuvor musste die DAO -Schnittstelle -Implementierungsklasse, die SQLSessoinfactory injiziert und durch den Frühling injiziert werden muss, benötigt.
Hier verwenden wir Spring, um die Konfigurationsmethode zu deklarieren und die Bean von DAO zu konfigurieren:
Lassen Sie UserDaoImpl implementieren Klassenererit SQLSessionDaOSupport
DAO konfigurieren
Konfigurieren Sie die DAO -Schnittstelle in applicationContext.xml
<!-Original DAO-Schnittstelle-> <bean id = "userDao"> <Eigenschaft name = "sqlSessionFactory" ref = "sqlSessionFactory"/> </bean>
Testverfahren
Source_Folder/userDaOImPltest.javapublic class userDaoImPlTest {private applicationContext applicationContext; // Spring Container in Setup -Methode @BeforePublic void setup () löst eine Ausnahme aus {applicationContext = new classpathxmlApplicationContext ("classpath: spring/application.xml.xml. testfinduserById () löst Ausnahme aus {userDao userDao = (userDao) applicationContext.getbean ("userDao"); // user user user = userdao.finduserbyid (1);Entwicklung von Mapper Agent
Usermapper.xml und usermapper.java
Kopieren Sie einfach das vorherige Projekt und löschen Sie den Paketpfad.
Erstellen Sie Proxy -Objekte über MapperFactoryBean
Da UsMapper kein Schnittstellentyp ist, müssen Sie MapperFactoryBean verwenden, um Schnittstellentypen zu generieren
Problem mit dieser Methode:
Es muss für jeden Mapper konfiguriert werden, problematisch.
Mapper -Scannen über MapperscannerConfiger (empfohlen)
* Nach Konfiguration des Mapper -Scan -Pfades über die Basispackage -Eigenschaft müssen der Scan -Pfad in SQLMapperConfig.xml nicht konfiguriert werden.
Die SQLSessionFactoryBeanname -Eigenschaft wird hier verwendet, da die SQLSessionFactory -Eigenschaft konfiguriert ist, die Konfiguration der Datenbankkonfigurationsdatei und die Datenquellenkonfiguration nicht zuerst geladen wird (DB.Properties)
Testcode
Reverse Engineering
Mybaits erfordert Programmierer, SQL -Aussagen selbst zu schreiben. MyBatis -Beamter bietet Reverse Engineering an, um den erforderlichen Code für die Ausführung von MyBatis automatisch zu generieren (Mapper.java, mapper.xml, po ..)
In der tatsächlichen Enterprise -Entwicklung ist eine häufig verwendete Reverse Engineering -Methode: Java -Code aufgrund der Tabelle der Datenbank generieren.
Laden Sie Reverse Engineering herunter
So verwenden (kann man nutzen). Run Reverse Engineering ausführen
Es wird empfohlen, die Java -Programmmethode anzuwenden und sich nicht auf Entwicklungstools zu verlassen.
Generieren Sie Codekonfigurationsdateien (4 Stellen, die geändert werden müssen)
Ort, an dem PO -Klasse erstellt wird: cn.itcast.ssm.po
Der Ort, an dem die Mapper -Zuordnungsdatei generiert wird: cn.itcast.ssm.mapper
Der Ort der generierten Mapper -Schnittstelle: cn.itcast.ssm.mapper
Datenbanktabelle angeben:
<table tableName = "items"> </table> <table tableName = "ordners"> </table> <table tablename = "orderDetail"> </table> <table tableName = "user"> </table> <? xml Version = "1.0" coding = "utf-8"? Generatorkonfiguration 1.0 // en "" http://mybatis.org/dtd/mybatis-generator-config_0.dtd "> <generatorConfiguration> <context id =" testtables "targetruntime NAME = "SuppressAllComentments" value = "true"/> </commentgenerator> <!-Informationen zu Datenbankverbindungen: Treiberklasse, Verbindungsadresse, Benutzername, Passwort-> <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: dünn:@127.0.0.1: 1521: yycg" userId "userId" userId = "yycg" kennwort "kennwort" -> <!-Standard False, JDBC Decimal- und Numeric Typen entlasten die Ganzzahl. Wenn es zutrifft, lösen sich die JDBC-Dezimal- und numerischen Typen auf java.math.bigdecimal-> <Javatyperesolver> <Property name = "ForceBigdecimals" Value = "False" /> < /Javatyperesolver> <!-TargetProject: Ort der PO-Klasse generiert-> <javamodelgenerators-> <Javamodelgeneratorium-> <JavaModelgeneratorien: targetPackage = "cn.itcast.ssm.po" targetProject = "./ Src"> <! /> </javamodelGenerator> <!-targetProject: wobei die Mapper-Kartendatei generiert wird-> <sqlmapgenerator targetPackage = "cn.itcast.ssm.mapper" targetProject = "./ Src"> <! /> </sqlmapgenerator> <!-targetPackage: Ort der Mapper-Schnittstelle Erzeugung-> <JavaClientGenerator Typ = "xmlmapper" targetPackage = "cn.itcast.ssm.Mapper" targetProject = "./ Src"> <! value = "false"/> </JavaClientGenerator> <!-Datenbanktabelle angeben-> <table tablename = "items"> </table> <table tableName = "ordners"> </table> <table tableName = "orderDetail"> </table> <table tableName = "user
Führen Sie den Generator aus
Generierter Code
Verwenden Sie generierten Code
Sie müssen den generierten Code im generierten Projekt in Ihr eigenes Projekt kopieren.
Testmethoden in itemsMapper
// benutzerdefinierte Bedingung Abfrage @TestPublic void testSelectByExample () {itemSexample itemSexample = new itemSexample (); // Abfragebedingungen durch Kriterien itemSexample.Criteria Criteria = itemSexample.Creatrecriteria (); itemsMapper.SelectByExample (itemSexample); System.out.println (Liste);} // query @TestPublic void basierend auf dem primären Schlüssel -Testen -SelectByprimaryKey () {items items items = new items (); its Cup "); Es ist nicht nötig, zuerst abfragen und dann zu aktualisieren //itemsmapper.UpdateByprimaryKeysselektiv(Record);}Das obige ist eine kurze Analyse der Integration und Reverse Engineering von Spring und MyBatis, von der ich hoffe, dass sie Ihnen hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!