Vorheriger Articlemybatis Einführung Lerntutorial (i) - In dem schnellen Start von MyBatis haben wir darüber gesprochen, wie MyBatis die Daten in der Benutzertabelle abfragen, was eine vorläufige Einführung in MyBatis ist. Heute werden wir erklären, wie Sie MyBatis verwenden, um CRUD -Operationen in der Benutzertabelle auszuführen. Bevor Sie zum Thema gehen, werde ich einige Grundkenntnisse über MyBatis und Crud hinzufügen.
Was ist MyBatis?
MyBatis ist ein hervorragendes Rahmen für Persistenzschicht, das einfache SQL -Abfragen, gespeicherte Verfahren und erweiterte Zuordnung unterstützt. MyBatis eliminiert manuelle Einstellungen fast aller JDBC -Code und -Parameter und die Suche nach Ergebnissätzen. MyBatis kann einfache XML oder Anmerkungen zur Konfiguration und Originalzuordnung verwenden, um Schnittstellen und Javas Pojos (einfache alte Java -Objekte) in Datenbank in der Datenbank zu kartieren.
Mybatis download: https://github.com/mybatis/mybatis-3/releases
Crud bedeutet
CRUD bezieht sich auf die Abkürzung der ersten Buchstaben mehrerer Wörter bei der Durchführung der Berechnungsverarbeitung. Es wird hauptsächlich verwendet, um die grundlegenden Betriebsfunktionen der Datenbank oder Persistenzschicht in Softwaresystemen zu beschreiben.
In dem Punkt, in dem die in diesem Artikel verwendete Testumgebung verwendet wird, ist die Testumgebung im vorherigen Artikel.
1. Verwenden Sie MyBatis, um CRUD -Operationen in Tabellen - XML -basierte Implementierung durchzuführen
1. Definieren Sie die SQL Mapping XML -Datei
Der Inhalt der Datei userMapper.xml ist wie folgt:
<? xml Version = ".". coding = "utf-"?> <! docType mapper public "-// mybatis.org//dtd mapper ./en" http://mybatis.org/dtd/mybatis--mapper.dtd"><! Der Wert des Namespace wird herkömmlicherweise auf den Paketnamen + SQL -Kartendateinamen eingestellt, so dass der Wert des Namespace garantiert eindeutig ist. Zum Beispiel namespace = "me.gacl.mapping.usmapper" ist me.gacl.mapping (Paketname) + UsMapper (UsMapper.xml-Dateientfernung Suffix)-> <mapper namespace = "me.gakl.mapping Seien Sie eindeutig, und das ParameterType -Attribut kann nicht wiederverwendet werden, um den in der Abfrage verwendeten Parametertyp anzuzeigen. Das Ergebnistyp-Attribut gibt den von der Abfrageergebnis zurückgegebenen Ergebnis-Set-Typ an. resultType = "me.gacl.domain.user"> select * von Benutzern wob id = "DeleteUser" parameterType = "int"> von Benutzern löschen wob Benutzer-> <select id = "getAllusers" resultType = "me.gacl.domain.user"> auswählen * von Benutzern </select> </mapper>
Der Code für Testklassen in Unit -Test lautet wie folgt:
Paket me.gacl.test; import Java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; sqlSession = mybatisutil.getSQLSession (false); Etikett. Durch den ID -Attributwert des Einfügen -Tags finden Sie die Ausführung von SQL*/String Anweisung = "me.gacl.mapping.usermapper SQLSession.insert (Anweisung, Benutzer); // Übermitteln von Transaktionen // sqlSession.commit (); // Nach der Ausführung von SQL mit SQLSession müssen Sie SQLSessionsqlSession.close () schließen; System.out.println (retresult);}@Testpublic void testupdate () {SQLSession SQLSession = MyBatISutil.getSQLSession (true);/*** MAP SQL Identification String,* me.gaCl.mapping.usMaper. ID -Attributwert des Update -Tags. Die ausführende SQL kann über den ID -Attributwert des Update -Tags gefunden werden. */String Anweisung = "me.gaCl.maping.usermapper.Updateuser"; // sql id String user = new user (); user.setId (); user.setName ("Lonely canglang"); user.setage (); // Die Änderung der Änderung intresult = SQLSSession.update (uswut -operation int retresult = sqlSsion.update (uswut -operation); SQLSession, Sie müssen sqlSession.close (); System.out.println (retresult);}@testpublic void testDelete () {sqlSession SQLSession = mybatisutil.getSQLSession (true); Mapper -Tag in der Datei userMapper.xml, * DeleteUser ist der ID -Attributwert des Delete -Tags. Die zu ausgeführte SQL ist über den ID -Attributwert des Delete -Tags*/String Anweisung = "me.gacl.mapping.usermapper SqlSessionsqlSession.close (); System.out.println (retresult);}@testpublic void testgetall () {sqlSession sqlSession = mybatisutil.getSqlSession ();/*** MAP SQL -Identifikationsstring,* me.gacl.gacl.Ge.Usermaping.Usermaping. userMapper.xml -Datei, * getAllusers ist der ID -Attributwert des Select -Tags. Durch den ID -Attributwert des SELECT -Tags finden Sie die ausführende SQL*/String -Anweisung, die ausgeführt werden soll. SQLSession Execute SQL, Sie müssen SQLSESSIONSQLSession.CLOSE () schließen; System.out.println (lstusers);}} 2. Verwenden Sie MyBatis, um CRUD -Operationen in Tabellen auszuführen - Annotationsbasierte Implementierung
1. Definieren Sie die Schnittstelle für die SQL -Zuordnung
Der Code der UsMapperi -Schnittstelle lautet wie folgt:
Paket me.gacl.mapping; import java.util.list; import me.gacl.domain.user; import org.apache.ibatis.Annotations.delete org.apache.ibatis.Annotations.insert; Import org. GaCl* Definieren Sie die Schnittstelle für die SQL -Zuordnung, geben Sie die SQL an, die mit Annotationen ausgeführt werden soll. Geben Sie die SQL an, die von der DeleteById -Methode@Delete ausgeführt werden soll ("Delete von Benutzern wob Benutzer); // Verwenden Sie die @Select -Annotation, um die SQL anzugeben, die von der GetById -Methode @select * von Benutzern ausgeführt werden soll. Es ist zu beachten, dass wir keinen bestimmten Implementierungsklassencode für die UsMapperi -Schnittstelle schreiben müssen. Diese spezifische Implementierungsklasse wird von mybatis dynamisch konstruiert, und wir müssen sie nur direkt verwenden.
2. Registrieren Sie diese Zuordnungsschnittstelle in der conf.xml -Datei
<? xml Version = ".". coding = "utf-"?> <! docType configuration public "-// mybatis.org//dtd config ./en" "http://mybatis.org/dtd/mybatis-config.dtd"> Adconfiguration> <transvaugs default =" Entwicklung "; /> <!-Datenbankverbindungsinformationen konfigurieren. /> </dataSource> </umwelt> </Umgebungen> <mappers> <!- Registrieren Sie die Datei userMapper.xml. The userMapper.xml is located in the package me.gacl.mapping, so the resource is written as me/gacl/mapping/userMapper.xml--><mapper resource="me/gacl/mapping/userMapper.xml"/><!-- Register UserMapper mapping interface-><mapper//mappers></configuration>
Der Code der Unit -Testklasse lautet wie folgt:
Paket me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.maping {@Testpublic void testadd () {sqlSession sqlSession = mybatisutil.getSQLSession (true); // Erhalten Sie das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle. Das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle wird dynamisch durch sqlSession.getMapper (UsMapperi.Class) konstruiert. UserMapperi mapper = sqlSession.getMapper (UsMapperi.Class); user user = new user (); user.setName ("userxdp"); user.setage (); int add = mapPer.add (user); // nach Verwendung sqlSession, um SQL zu führen, Sie müssen SQLSESSISSISIONSQLS (). System.out.println (add);}@testpublic void testupdate () {SQLSession SQLSession = MyBatisutil.getSQLSession (true); // Erhalten Sie das Objekt der Implementierungsklasse der UsMaperi -Schnittstelle. Das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle wird dynamisch durch sqlSession.getMapper (UsMapperi.Class) userMapperi mapper = sqlSession.getMapper (UsMapperi.ClASS) konstruiert. User user = new user (); user.setId (); user.setName ("long Lang_xdp"); user.setage (); // Die Änderungsoperation int retresult = mapPer.Update (user); // Nach Verwendung sqlSession müssen Sie SQLSessionsqlSession.close (); testDelete () {sqlSession SQLSession = mybatisutil.getSQLSession (true); // Erhalten Sie das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle. The implementation class object of the UserMapperI interface is dynamically constructed by sqlSession.getMapper(UserMapperI.class) UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);//Execute the delete operation int retResult = mapper.deleteById();//After using SqlSession to execute SQL, you need to close SQLSESSIONSQLSession.close (); System.out.println (retresult);}@testpublic void testgetUser () {sqlSession sqlSession = mybatisutil.getSQLSession (); // Erhalten Sie das Objekt der Implementierungsklasse der UsMaperi -Schnittstelle. Das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle wird dynamisch durch sqlSession.getMapper (UsMapperi.ClASS) UsMapperi Mapper = SQLSession.getMapper (UsMapperi.ClASS); // Execute -Abfragebetriebe und automatisch einkapitulieren. SQL, Sie müssen sqlSessionsqlSession.close () schließen; System.out.println (Benutzer);}@testpublic void testgetall () {sqlSession sqlSession = mybatisutil.getSQLSession (); // Erhalten Sie das Objekt der Implementierungsklasse der UsMaperi -Schnittstelle. Das Objekt der Implementierungsklasse der UsMapperi -Schnittstelle ist dynamisch durch sqlSession.getMapper (UsMapperi.ClASS) UsMapperi Mapper = SQLSession.getMapper (UsMapperi.ClASS); // Executieren des Abfragebetriebs und der automatischen Einkapsel des Abfragetalls. Durch Ausführung von SQL mit SQLSession müssen Sie SQLSESSIONSQLSession.close () schließen; System.out.println (lstusers);}} Der verwendete MyBatisutil -Werkzeugklassencode lautet wie folgt:
Paket me.gacl.util; import Java.io.inputstream; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.Session.sqlSessionFactory; MyBatisutil {/*** Get SqlSessionFactory*@return sqlSessionFactory*/public static SQLSessionFactory GetQlSessionFactory () {String Resource = "conf.xml"; InputStream is = mybatisutil.getClass. SQLSessionFactoryBuilder (). Build (IS); return factory;}/*** SQLSession* @return SQLSession*/public static sqlSession getQlSession () {returnQlSessionFactory (). OpenSession ();}/*** SQLSSession @pparam isAntory @pparam isauktor* thiscls, dass SQLSSession @pparam isautocommit* thiscls -sqlSession* @pparam isautocommit* thing sqlSSement* @pparam isautocommit* this -the -sqlsSession @pparam isauktory* this -the -sqlsSession @pparam isauTory* this -the -th -sqlsSement* @parens Die Transaktion nach SQL wurde ausgeführt* FALSE zeigt an, dass das erstellte SQLSession -Objekt die Transaktion nach Ausführung von SQL nicht automatisch bezieht. Zu diesem Zeitpunkt müssen wir SQLSession.commit () manuell anrufen, um die Transaktion* @return SQLSession*/public static SQLSession GotsQlSession (boolean isAutocommit) {returnQlSessionFactory (). OpenSession (Isautocommit);}}} einzureichen.Alle oben genannten Codes wurden getestet und jeder kann sie mit Zuversicht verwenden!
Das obige Tutorial von MyBatis Learning, das Ihnen vom Editor (ii) vorgestellt wurde - wie man MyBatis verwendet, um Crud -Operationen auf der Benutzertabelle auszuführen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!