MyBatis-Spring-Projekt
Derzeit werden die meisten Java -Internetprojekte mit Spring MVC + Spring + MyBatis erstellt.
Die Verwendung von Spring-IOC kann verschiedene Java-Ressourcen effektiv verwalten und die Plug-and-Play-Funktion erreichen. Durch das Frühlings-AOP-Framework können Datenbanktransaktionen mit der Spring-Management anvertraut werden, wodurch ein großer Teil des Transaktionscodes beseitigt und mit den hohen Flexibilität, konfigurierbaren und optimierten SQL-Eigenschaften von MyBatis kombiniert werden kann, können große Websites mit hoher Leistung erstellt werden.
Es besteht kein Zweifel, dass die beiden wichtigsten Rahmenbedingungen, Mybatis und Frühling, zur Mainstream -Framework -Kombination der Java -Internet -Technologie geworden sind. Sie haben dem Test großer Datenvolumen und groß angelegten Anfragen standgehalten und wurden in Internetsystemen weit verbreitet. Durch die Verwendung von MyBatis-Spring wird die Geschäftsschicht und die Modellschicht besser getrennt. Gleichzeitig ist die Verwendung von MyBatis in der Frühlingsumgebung einfacher und speichert viel Code, und Sie können sogar vermeiden, Objekte wie SQLSessionFactory und SQLSession zu verwenden, da MyBatis-Spring sie für uns einkapsuliert.
Auszug aus: "Java ee Internet Lightweight Framework Integrierte Entwicklung"
Schritt 1: Erstellen Sie ein Testprojekt
Der erste Schritt besteht darin, ein neues WebProject -Projekt namens [MyBatisandspring] in Idee zu erstellen:
Erstellen Sie dann 4 leere Pakete in [SRC]:
Erstellen Sie dann einen neuen Quellordner [config], um verschiedene Ressourcenkonfigurationsdateien einzureichen:
Erstellen Sie dann einen neuen [Web-inf] -Fordrehensordner im Ordner [Web] und erstellen Sie eine [Klassen] und [lib] unter ihm und ändern Sie den Ausgangsort des Projekts unter [Klassen]:
Die vollständige Anfangsstruktur des Projekts lautet wie folgt:
Schritt 2: Einführung des Abhängigkeits -Jar -Pakets
Der zweite Schritt besteht darin, das Abhängigkeits -JAR -Paket des Projekts vorzubereiten:
Platzieren Sie das oben aufgeführte JAR-Paket im Ordner [lib] im Ordner [web-inf] und fügen Sie dann Abhängigkeiten hinzu.
Schritt 3: Spring -Konfigurationsdateien schreiben
Der dritte Schritt besteht darin, die Frühlingskonfigurationsdatei zu schreiben:
<? xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.spingframework.org/schema/beans http://www.springramework.org/schema/beans/bean- http://www.springframework.org/schema/context http://www.springFramework.org/schema/context/spring-context.xsd "> <!-Ladekonfigurationsdatei-> <context: Property-Plactuper-Data =" Klasse "ClassPath: DB.Path: DB.Path: DB.PATH: DB.PATH: DB.PATH: DB. id = "dataSource"> <Eigenschaft name = "triverClassName" value = "$ {jdbc.driver}"/> <Eigenschaft name = "url" value = "$ {jdbc.url}"/> <Eigenschaft name = "username" value = "$ {jdbc.username}"/> <Stiefname ". </bean> <!-SQLSessionFactory-> <bean id = "Schritt 4: Schreiben Sie die MyBatis -Konfigurationsdatei
Schritt 4: Schreiben Sie die globale Konfigurationsdatei von MyBatis unter das [myBatis] Paket SQLMAPConfig.xml:
<? Switch-> <Einstellung name = "LazyLoadingInabled" value = "true"/> <!-Aktives Laden in passives Laden (d. H. Laden auf der Bedarf)-> <Einstellung name = "Aggressive Leading" value = "False"/> <!-Einschalten des globalen Cache-Switch (Secondary Cache) Definition. <typealias> <package name = "cn.wmyskxz.pojo"/> </typealias> <!-Laden Sie die Kartendatei-> <mappers> <!-Laden Sie eine Kartendatei jeweils durch die Ressourcenmethode-> <Mapper Resource = "SQLMAP/UsMaper.xml"/> <! name = "cn.wmyskxz.mapper"/> </mappers> </configuration>
In dieser Konfigurationsdatei:
Schritt 5: Schreiben Sie Mapper und andere Konfigurationsdateien
Schritt 5: Schreiben Sie die Mapper -Zuordnungsdatei. Hier ist der Name der Mapper -Zuordnungsdatei weiterhin als "userMapper.xml" definiert (was mit der Konfiguration in SQLMAPConfig.xml übereinstimmt). Um den Effekt zu testen, wird nur eine Abfrageklasse SQL -Karte konfiguriert:
<? parameterType = "_ int" resultType = "user"> select * vom Benutzer wobei ID = #{id} </select> </mapper>In dieser Konfiguration werden die Ausgabeparameter auf "Benutzer" abgebildet, da die Entitätsklasse unter dem Paket "cn.wmyskxz.pojo" in sqlmapconfig.xml konfiguriert wurde "cn.wmyskxz.pojo" Paket:
Paket cn.wmyskxz.pojo; Import Java.io.Serializable; Benutzer im Bereich der öffentlichen Klasse implementiert serialisierbar {private int id; privater String -Benutzername; / * Getter und Setter */}Das Implementieren der serialisierbaren Schnittstelle besteht darin, sich auf die anschließende Verwendung des Mapper -Dynamischen Proxy vorzubereiten, und hier wird kein dynamischer Proxy verwendet.
Die Datenbankverbindungsinformationen sind in der Datenbankressource "DB.Properties" konfiguriert und in Form von "Key = value" konfiguriert. String verwendet "$ {}", um den Wert zu erhalten, der dem Schlüssel entspricht:
jdbc.driver = com.mysql.jdbc.driverjdbc.url = jdbc: mysql: // localhost: 3306/mybatis? CharakterCoding = Utf-8jdbc.username = rootjdbc.password = root
Zusätzlich entspricht die Protokollkonfiguration der vorherigen Konfiguration, sodass ich sie direkt eingefügt habe:
# Globale Protokollierungskonfiguration# In der Entwicklungsumgebung sollte die Protokollebene auf Debug eingestellt werden, und die Produktionsumgebung sollte auf Info oder FehlerLog4j.Rootlogger = Debug, Stdout# festgelegt werden output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
Schritt 6: Schreiben Sie die DAO -Schicht
Schritt 6: Schreiben Sie die Data Access -Objektschicht.
Da dieses Projekt nur den Benutzerbenutzer abfragt, gibt es in der DAO -Ebene nur eine Klasse. Die Schnittstellenschnittstelle der DAO -Ebene wird unter "cn.wmyskxz" erstellt, das die FindUserById -Methode definiert, und der Parameter ist der ID -Wert des Benutzers (int -Typ):
Paket cn.wmyskxz.dao; importieren cn.wmyskxz.pojo.user; public interface userdao {// Benutzerinformationen basierend auf ID -öffentlichen Benutzer findUserById (int id) löst Ausnahme aus;}Erstellen Sie dann die UserDao -Schnittstelle Implementierungsklasse UserDaoImpl unter demselben Paket:
Paket cn.wmyskxz.dao; importieren cn.wmyskxz.pojo.user; import org.apache.ibatis.Session.sqlSession; findUserById (int id) löst Ausnahme aus {// Erben Sie die SQLSessionDaOSupport -Klasse und bestehen Sie this.getSQLSession () Get SqlSession SQLSession SQLSession = this.getSQLSession (); User user = sqlSession.selectone ("test.finduserbyId", ID); Benutzer zurückgeben; }}Es gibt einige Erklärungen:
<!-Original DAO-Schnittstelle-> <bean id = "userDao"> <Eigenschaft name = "sqlSessionFactory" ref = "sqlSessionFactory"/> </bean>
Hinweis: Nachdem die DAO -Implementierungsklasse die SQLSessionDaOSupport -Elternklasse erbt, besteht nicht erforderlich, die Methode zu definieren, um die SQLSession -Session -Session -Instanzklasse für sich selbst zu erhalten. Die übergeordnete Klasse lädt die Datenquelleninformationen standardmäßig und bietet eine Methode zur Ermittlung der SQLSession -Klasse.
Schritt 7: Schreiben Sie Service -Testunterricht
Erstellen Sie die Testklasse [UserServicetest] unter "Cn.Wmyskxz.Test" -Paket:
Paket cn.wmyskxz.test; import cn.wmyskxz.dao.userdao; import cn.wmyskxz.pojo.user; import org.junit.before; org.springframework.context.support.classPathXmlApplicationContext; Public Class UserServicetest {private applicationContext applicationContext; // Erhalten Sie das Feder -Konfigurationsdateiobjekt zuerst, bevor Sie die Testmethode ausführen // Annotation @before Aufruf dieser Methode, bevor alle Testmethoden dieser Klasse @Before public void setup () Ausnahme ausführen {applicationContext = new classPathxMlApplicationContext ("ClassPath: Spring/ApplicationContext.xml"); } @Test public void testfinduserById () löst Ausnahme aus {// userDao -Objekt erhalten, indem Ressourcenobjekte userDao userDao = (userDao) applicationContext.getbean ("userDao") konfiguriert werden. // user user user = userDao.finduserById (1) rufen; // Benutzerinformationssystem ausgeben. }}Führen Sie die Testmethode aus und die Ausgabeergebnisse sind wie folgt:
Dynamische Proxy + Annotation -Implementierung
Das obige Beispielprogramm wird mit Mapper Dynamic Proxy und Anmerkungen nicht abgeschlossen. Versuchen wir, wie Sie dynamische Proxy und Anmerkungen verwenden:
Schritt 1: Schreiben Sie UserQueryMapper
Erstellen Sie eine neue [userQueryMapper] Proxy -Schnittstelle unter [Mapper] und verwenden Sie Annotationen:
Paket cn.wmyskxz.mapper; importieren cn.wmyskxz.pojo.user; org.apache.ibatis.Annotations.Select; öffentliche Schnittstelle UserQueryMapper {@select ("Select * aus dem Benutzer, wobei ID = #{id}") öffentlicher Benutzer fundbyid (int id) Throws -Ausnahme;Hinweis: Standardmäßig ist der Name der Bean UserQueryMapper (d. H. Der erste Buchstabe ist Kleinbuchstaben).
Nachdem wir die Proxy -Klasse haben, müssen wir den Frühling benachrichtigen, um diese Klasse hier zu scannen. Mapper muss einen speziellen Scanner verwenden, um das Konfigurationsobjekt zu scannen:
<!-Mapper Scanner-> <bean> <!-Scannen Sie die Komponenten unter dem Paket cn.wmyskxz.mapper-> <Eigenschaft name = "Basepackage" value = "cn.wmyskxz.mapper"/> </bean>
Schritt 2: Schreiben Sie eine Testklasse
Dieses Mal holen wir das UserDao -Objekt nicht mehr ab, sondern das definierte Mapper -Proxy -Objekt UserQueryMapper:
Paket cn.wmyskxz.test; import cn.wmyskxz.mapper.userQueryMapper; Import Cn.wmyskxz.Pojo.User; org.springframework.context.support.classPathXmlApplicationContext; Public Class UserServicetest {private applicationContext applicationContext; // Erhalten Sie das Feder -Konfigurationsdateiobjekt zuerst, bevor Sie die Testmethode ausführen // Annotation @before Aufruf dieser Methode, bevor alle Testmethoden dieser Klasse @Before public void setup () Ausnahme ausführen {applicationContext = new classPathxMlApplicationContext ("ClassPath: Spring/ApplicationContext.xml"); } @Test public void testfinduserById () löst Ausnahme aus {// userDao -Objekt abrufen, indem Ressourcenobjekte userQueryMapper userQueryMapper = (userQueryMapper) applicationContext.getBean ("userQueryMapper") konfiguriert werden. // UserDao -Methode user user = userQueryMapper.FinduserById (1) aufrufen; // Benutzerinformationssystem ausgeben. }}Führen Sie die Testmethode aus und erhalten Sie das richtige Ergebnis:
Sie können sehen, dass die Abfrageergebnisse übereinstimmen wie die früheren Nicht-Mapper-Agenten.
Zusammenfassen
Das obige ist die perfekte Integrationsmethode zwischen MyBatis und Spring, die Ihnen vom Herausgeber vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. 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!