Verwenden Sie allein MyBatis, um Dinge zu verwalten
Ich habe verwandte Inhalte in MyBatis 'Artikel geschrieben. Hier werde ich weiterhin die einfachste Demo schreiben. Lassen Sie uns den Inhalt von MyBatis schon einmal überprüfen. Erstellen Sie zunächst eine Tabelle und erstellen Sie eine einfache Schülertabelle:
Tabelle Student erstellen (Student_id int auto_increment, student_name varchar (20) NICHT NULL, Grundschlüssel (Student_id))
Erstellen Sie Entity Class Student.java:
public class student {private int studentId; toString () {return "student {[studentId:" + studentId + "], [studentName:" + studentName + "]}";}} Um es mehr auszudrücken, ist die Überschreibung der Methode toString () für Entitätsklassen und das Drucken jedes (oder ein Schlüsselattribut) ein empfohlener Ansatz. Als nächstes kommt Config.xml, das die grundlegende JDBC -Konfiguration enthält:
<? type = "org.xrq.domain.student"/> </typealias> <Environments default = "Entwicklung"> <Environment ID = "Development"> <transactionManager Type = "jdbc"/> <dataSource type = "Pooled"> <Property name = "triver". value = "jdbc: mysql: // localhost: 3306/test"/> <Eigenschaft name = "userername" value = "root"/> <Eigenschaft name = "passwart" value = "root"/> </dataSource> </umwelt> </Umgebungen> <mappers> <mapper ressource = "student_mapper
Dann gibt es da noch student_mapper.xml, hauptsächlich die spezifische SQL -Anweisung:
<mapper namespace = "studentMapper"> <resultmap type = "student" id = "studentMap"> <id column = "student_id" Property = "studentid" jdbctype = "Integer" /> <resulting column = "student_name resultMap = "studentMap"> select student_id, student_name von student; </select> <insert id = "InsertStudent" useGeneratedkeys = "true" keyProperty = "studentId" parameterType = "student"> in student (student_id, student_name) Werte ( #{studentId, jdbctype = iteger}, | jdbctype = varchar}); </insert> </mapper> Erstellen Sie eine mybatisutil.java, mit der einige grundlegende MyBatis -Elemente erstellt werden. Die nachfolgenden Klassen erben diese Klasse:
public class mybatisutil {geschützte statische SQLSessionFactory SSF; Protected Static Reader Reader; static {try {reader = ressourcen.getResourceasReader ("config.xml"); ssf = new SQLSessionFactoryBuilder (). Protected SQLSession getQlSession () {return ssf.openSession ();}} Entwicklungsanforderungen auf Unternehmensebene:
1. Separate Definition und Implementierung
2. Layered Development, normalerweise DAO-> Service-> Controller, ist nicht ausgeschlossen, dass eine weitere Schicht/mehrere Schicht oder eine weniger Schicht gemäß der spezifischen Situation hinzugefügt wird.
Schreiben Sie also zuerst eine STUSTHDAO.JAVA -Schnittstelle:
public interface studentdao {publiclist <student> selectAllstudents (); public intStudent (Student);} Schreiben Sie schließlich eine StudentdaoImpl.java, um diese Schnittstelle zu implementieren. Beachten Sie, dass Sie die MyBatisutil.java -Klasse erben müssen:
öffentliche Klasse studentdaoImpl erweitert MyBatisutil implementiert studentDao {private statische Schluss -String -Namespace = "StudentMapper."; Public List <Student> selectAllStudents () {sqlSession SS = GETQLSession (); List <Student> List = Ss.SelectList (NameSpace InnersuStudents (); student) {sqlSession ss = getQlSession (); int i = ss.insert (Namespace + "InsertStudent", Student); // ss.commit (); ss.close (); return i;}} Schreiben Sie eine Testklasse:
public class StudentTest{public static void main(String[] args){StudentDao studentDao = new StudentDaoImpl();Student student = new Student();student.setStudentName("Jack");studentDao.insertStudent(student);System.out.println("The primary key inserted is: " + student.getStudentid ()); System.out.println ("---- Display-Studenten ------"); LIST <Sudent> studentList = studentDao.Selectallstudentents (); für (int i = 0, length = studentList.size (); i <Länge; i ++) system.out.println (studentList.get (i));}} Das Ergebnis muss leer sein.
Ich habe gesagt, dass dieses Beispiel sowohl eine Überprüfung als auch eine Einführung in unseren Inhalt heute ist. Der Grund dafür ist leer, dass die Einfügungsoperation durchgeführt wurde, aber MyBatis hilft uns nicht, die Dinge automatisch einzureichen, sodass das, was angezeigt wird, natürlich leer ist. In diesem Fall müssen Sie die Transaktion manuell über die Commit () -Methode der SQLSession einreichen, dh den Kommentar in Zeile 17 der StudentDaoImpl.java -Klasse.
Um es stärker auszudrücken, hat dieses Beispiel zusätzlich zu dem grundlegenden MyBatis -Einfügungsvorgang auch die Funktion, die eingefügte Primärschlüssel -ID auf der Grundlage der Einfügung zurückzugeben.
Verwalten Sie als nächstes die Dinge, um MyBatis-Dinge zu verwalten, was auch die am häufigsten verwendete Ding-Managementpraxis in der Entwicklung auf Unternehmensebene ist.
Verwalten Sie MyBatis -Dinge mit Frühling
Es gibt viele Artikel im Internet, um dies zu erklären, und ich habe viel gesucht, aber entweder kopieren und einander einfügen oder nicht das gesamte Beispiel klar erklären. In diesem Teil versuche ich zu erklären, wie man Spring verwendet, um MyBatis -Dinge zu verwalten.
Verwenden Sie Spring zur Verwaltung von MyBatis-Dingen sowie zu den erforderlichen Modulbohnen von Spring, Kontext, Kern, Ausdruck und Commons-Logging, ist auch der folgende Inhalt erforderlich:
(1) MyBatis-Spring-1.x.0.jar, dies ist ein notwendiges JAR-Paket für die Frühlingsintegration mybatis.
(2) Datenbankverbindungspool, DBCP und C3P0 können verwendet werden. Ich benutze Alibabas Druid hier
(3) JDBC, TX, AOP, JDBC ist im Grunde genommen nicht zu erwähnen. TX und AOP werden verwendet, weil die Unterstützung von Spring für MyBatis -Ding -Management durch AOP erreicht wird
(4) aopalliance.jar, dies ist ein notwendiges JAR -Paket zur Verwendung von Frühlings -AOP
Das obige JAR -Paket wird mit Maven heruntergeladen. Diejenigen, die Maven nicht verwendet haben, können es auf CSDN herunterladen. Sie können danach suchen.
In der Konfigurationsdatei config.xml von myBatis kann die JDBC -Verbindung entfernt werden und nur der Teil der Typealiase kann beibehalten werden:
<? type = "org.xrq.domain.student"/> </typealiases> </configuration>
Lassen Sie mich erwähnen, dass MyBatis eine andere Konfigurationsdatei student_mapper.xml nicht geändert werden muss. Schreiben Sie als Nächstes die Feder -Konfigurationsdatei, und ich nenne es Spring.xml:
<xml Version = "1.0" coding = "utf-8"?> <Beans xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://wwwwwwwwwwwww./wwwwwwwwwwww./wwwwwwwwwwww.- mlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.spingframework.org/schema/aop" xsi: schemalocation = "http://www.spingframework.org/scha. http://www.springframework.org/schema/beans/spring-beans-4.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/skontext/sping-conext- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-2.2.xsdhtp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx--frax-xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"><!-- Annotation configuration--><tx:annotation-driven transaction-manager="transactionManager" /><context:annotation-config /> <context:component-scan base-package="org.xrq" /><!-- Database Verbindungspool, verwenden Sie Alibabas Druid-> <bean id = "dataSource" init-method = "init" destroy-method = "close"> <Eigenschaft name = "url" value = "jdbc: mysql: // localhost: 3306/test"/> <Property Name = "Username" Value = "Root"/"Wurzel"/"Wurzel"/" id = "sqlSessionFactory"> <Eigenschaft name = "configLocation" value = "classPath: config.xml" /> <Eigenschaft name = "mapperlocations" value = "classPath:*_ mapper.xml" /> <Eigenschaft name = "dataSource" refit = "dataSource" /> < /Anman <! name = "dataSource" ref = "dataSource"/> </bean> </beans>
Dies enthält hauptsächlich den Transaktionsmanager und den Datenbankverbindungspool.
Darüber hinaus sehen wir, dass es einen SQLSessionFactory gibt. Freunde, die MyBatis benutzt haben, müssen mit dieser Klasse vertraut sein. Es wird verwendet, um die MyBatis -Umgebung zu konfigurieren. In der SQLSessionFactory gibt es zwei Attribute ConfigLocation und Mapperlocations. Wie der Name schon sagt, repräsentiert es den Speicherort der Konfigurationsdatei und den Speicherort der Zuordnungsdatei. Solange der Pfad korrekt konfiguriert ist, lädt Feder diese beiden Konfigurationsdateien automatisch.
Dann, was Sie ändern möchten, ist die Implementierungsklasse von DAO. Zu diesem Zeitpunkt erben Sie nicht mehr die vorherige MyBatisutil-Klasse, sondern erben die SQLSessiondaosupport.java von mybatis-pring-1.x.0.jar. Der spezifische Code lautet wie folgt:
@RepositoryPublic Class studentDaoImpl erweitert SQLSessionDaOSupport implementiert studentDao {private statische String -Namespace = "StudentMapper";@ResourcePublic void setSQlSessionFactory (SQLSessionFactoryFactory). selectAllStudents () {return getQlSession (). SelectList (Namespace + "SelectAllStudents");} public IntStudent (Student Student) {return GotsQlSession (). Insert (Namespace + "InsertStudent", Student);}}}}Hier werden zwei Anmerkungen verwendet. Lassen Sie uns separat darüber sprechen.
(1) @Repository, diese Annotation entspricht @Component, @Controller und unseren häufigsten @Service -Anmerkungen, die alle eine Klasse als Frühlingsbohne deklarieren können. Ihre Unterschiede sind nicht in spezifischer Semantik, sondern mehr in der Positionierung der Annotation. Wie bereits erwähnt, konzentrieren sich Anwendungen auf Unternehmensebene auf das Konzept der hierarchischen Entwicklung. Daher sollten diese vier ähnlichen Annotationen wie folgt verstanden werden:
•@repository -Annotation entspricht der Persistenzschicht, nämlich der DAO -Schicht, die zur direkten Interaktion mit der Datenbank verwendet wird. Im Allgemeinen entspricht eine Methode einer bestimmten SQL -Anweisung
•@Service Annotation, die der Serviceschicht entspricht, nämlich der Serviceschicht, ist die Funktion der Kombination von Einzel-/Mehrfach -SQL -Anweisungen. Wenn es einfach ist, werden Sie natürlich eine Methode der DAO -Ebene direkt aufrufen.
•@Controller -Annotation, die der Steuerungsschicht entspricht, dh der Steuerungsschicht im MVC -Designmodus. Seine Funktion besteht darin, Benutzeranfragen zu empfangen, verschiedene Dienste anzurufen, um Daten gemäß Anfragen zu erhalten und Daten entsprechend den Anforderungen zu kombinieren und sie wieder an den Frontend zu wickeln.
•@-Komponente Annotation, die mehr dem Konzept einer Komponente entspricht. Wenn eine Bean nicht weiß, dass sie zu einer Ebene gehört, können Sie @Component Annotation verwenden, um Annotate zu beantworten.
Dies spiegelt auch einen der Vorteile von Annotationen wider: den Namen zu sehen und die Bedeutung zu kennen, dh, wenn Sie diese Annotation sehen, kennen Sie die Funktion dieser Klasse grob, dh ihre Positionierung im gesamten Projekt.
(2) @Resource haben diese Annotation und @autowired Annotation die gleiche Bedeutung, und beide können automatisch mit Attributattributen injiziert werden. Da SQLSessionFactory der Kern von MyBatis ist, wurde es in Spring.xml deklariert. Daher wird die Bean mit der ID "SQLSessionFactory" hier durch die @Resource -Annotation injiziert. Danach kann die SQLSession über die Methode GetsQlSession () erhalten werden und die Daten werden hinzugefügt, gelöscht, geändert und überprüft.
Schließlich ist es nichts weiter, als eine Testklasse zum Testen zu schreiben:
public class studentTest {public static void main (String [] args) {applicationContext ac = new classPhoxmlApplicationContext ("Spring.xml"); Studentdao studentdao = (studentDao) ac.getBean ("StudentdaoImpl"); Student = New Student (); studentdao.insertstudent (student); für (int i = 0, length = studentList.size (); i <Länge; i ++) system.out.println (studentList.get (i));}} Da die Klasse von StudentDaoImpl.java die @Repository -Annotation verwendet und keinen Alias angibt, ist der Name von studentDaoImpl.java im Frühlingscontainer "Erster Buchstaben unteres Gehäuse + verbleibende Buchstaben", dh "StudentDaoImpl".
Nachdem Sie das Programm ausgeführt haben, sehen Sie, dass der neue Schüler auf der Konsole durchquert wurde, dh der Schüler wurde direkt in die Datenbank eingefügt. Im gesamten Prozess gab es keinen Commit oder Rollback. Alle von ihnen wurden im Frühling implementiert. Dies soll Spring verwenden, um Dinge auf MyBatis zu verwalten.
PostScript
Dieser Artikel überprüft die grundlegende Verwendung von MyBatis und verwaltet Spring, um Dinge auf MyBatis zu verwalten, und enthält detailliertere Code -Beispiele. Bedürftige Freunde können es nach dem Code studieren. Basierend auf diesem Artikel werde ich später einen Artikel schreiben, um die Implementierung von Multi-Daten-Ding-Management zwischen einzelnen und mehreren Tabellen zu erläutern. Diese Anforderung ist auch eine häufige Voraussetzung für Unternehmen und Anwendungen.