So schreiben Sie Konfigurationsdateien und verwenden MyBatis einfach MyBatis3.x Hier ist eine kurze Einführung in MyBatis. Die spezifische Verwendung wird im Code veröffentlicht. Die Vergangenheit und Gegenwart von MyBatis Der Vorgänger von MyBatis ist iBatis. iBatis wurde ursprünglich von Clinton Begin entwickelt und später der Apache Foundation gespendet, um das Open-Source-Projekt iBatis zu etablieren. Im Mai 2010 wurde das Projekt von der Apache Foundation zu Google Code verschoben und in MyBatis umbenannt. Die Paketstruktur ist jedoch immer noch Ibatis. www.mybatis.org/ https://github.com/mybatis Einführung in MyBatis MyBatis ist ein ORM-Framework (Data Persistence Layer). Es wird eine Zuordnungsbeziehung zwischen Entitätsklassen und SQL-Anweisungen hergestellt. Dabei handelt es sich um eine halbautomatische ORM-Implementierung. Vorteile von MyBatis: Alle SQL-Anweisungen sind in XML definiert (empfohlen). Es kann auch durch Anmerkungen auf der Schnittstelle implementiert werden. Diese Zuordnungsdateien werden Mapper genannt. Vergleich mit herkömmlichem JDBC Reduzierung der Codemenge um 61 % Das einfachste Persistenz-Framework Leistungsverbesserungen auf Architekturebene SQL-Code ist vollständig vom Programmcode getrennt und kann wiederverwendet werden Verbesserte Arbeitsteilung in Projekten Verbesserte Portabilität kannMyBatisDemo Paket- und Klassenverteilungsdiagramm: Mybatis hat nur ein Paket und ein Datenbank-Supportpaket. Konfigurationsdatei mybatis-config.xml (der Dateiname kann natürlich beliebig gewählt werden, aber versuchen Sie, der Spezifikation zu entsprechen. Die Konfigurationsdatei finden Sie im Handbuch) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE Konfiguration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <Konfiguration> <TypAliase> <!-- Alias des Konfigurationstyps --> <typeAlias alias="Benutzer" type="cn.hncu.domain.User" /> </TypAliases> <Umgebungen Standard="Entwicklung"> <Umgebungs-ID="Entwicklung"> <transactionManager Typ="JDBC" /> <Datenquellentyp="POOLED"> <Eigenschaftsname="Treiber" Wert="com.mysql.jdbc.Driver" /> <Eigenschaftsname="URL" Wert="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8" /> <property name="Benutzername" value="hncu" /> <property name="Passwort" value="1234" /> <Eigenschaftsname="poolMaximumActiveConnections" Wert="5"/> </dataSource> </Umgebung> </Umgebungen> <Mapper> <mapper-Ressource="cn/hncu/domain/Benutzer.xml"></mapper> <mapper-Ressource="cn/hncu/domain/User2.xml"></mapper> </Mapper> </Konfiguration> SqlSessionUtils.java Paket cn.hncu.utils; importiere java.io.IOException; importiere java.io.InputStream; importiere java.sql.Connection; importiere org.apache.ibatis.io.Resources; importiere org.apache.ibatis.session.SqlSession; importiere org.apache.ibatis.session.SqlSessionFactory; importiere org.apache.ibatis.session.SqlSessionFactoryBuilder; importiere com.mysql.jdbc.interceptors.SessionAssociationInterceptor; öffentliche Klasse SqlSessionUtils { private statische SqlSessionFactory sessionFactory=null;//Datenquelle--pool statisch{ versuchen { InputStream in=Resources.getResourceAsStream("mybatis-config.xml");//Konfigurationsdatei laden sessionFactory=new SqlSessionFactoryBuilder().build(in); /* * Hier ist eine Methode, die zum Laden von Dateien nicht die Verwendung der Klasse „Resources“ erfordert (Verwendung von ClassLoader zum Laden von Konfigurationsdateien auf der untersten Ebene) : SessionFactory = neuer SqlSessionFactoryBuilder().build(SqlSessionUtils.class.getClassLoader().getResourceAsStream("mybatis-config.xml")); */ } Fang (IOException e) { e.printStackTrace(); } } öffentliche statische SqlSessionFactory getSessionFactory(){ SessionFactory zurückgeben; } öffentliche statische SqlSession getSqlSession(){ gibt sessionFactory.openSession() zurück; } öffentliche statische void main(String[] args) { //Mybatis steuert die Anzahl der Verbindungen im Pool for(int i=0;i<10;i++){ s=getSqlSession(); System.out.println(s); Verbindung con=s.getConnection(); System.out.println("con: "+con); } } } Benutzer.java Paket cn.hncu.domain; öffentliche Klasse Benutzer { private String-ID; privater String-Name; privates String-Passwort; öffentliche Zeichenfolge getId() { Rückgabe-ID; } öffentliche void setId(String id) { diese.id = ID; } öffentliche Zeichenfolge getName() { Rückgabename; } öffentliche void setName(String name) { dieser.name = Name; } öffentlicher String getPwd() { gib Passwort zurück; } öffentliche void setPwd(String pwd) { dies.pwd = pwd; } @Überschreiben öffentliche Zeichenfolge toString() { returniere "Benutzer [id=" + id + ", name=" + name + ", pwd=" + pwd + "]"; } } Benutzerzuordnungsdatei User.xml (die einfachste Konfigurationsdatei) Paket cn.hncu.domain; importiere java.util.List; öffentliche Schnittstelle UserMapper { öffentliche Liste<Benutzer> all(); öffentliche Liste<Benutzer> Benutzer2(String String); öffentliche Liste<Benutzer> user3(Benutzer user); } UserMapper.java (Schnittstelle, die offizielle Empfehlung ist, die Schnittstellenmethode zu verwenden – sicherer) Paket cn.hncu.domain; importiere java.util.List; öffentliche Schnittstelle UserMapper { öffentliche Liste<Benutzer> all(); öffentliche Liste<Benutzer> Benutzer2(String String); öffentliche Liste<Benutzer> user3(Benutzer user); }
Paket cn.hncu.demo; importiere java.util.HashMap; importiere java.util.List; importiere java.util.Map; importiere org.apache.ibatis.session.SqlSession; importiere org.junit.Test; importiere cn.hncu.domain.User; importiere cn.hncu.domain.UserMapper; importiere cn.hncu.utils.SqlSessionUtils; öffentliche Klasse Demo1 { @Prüfen öffentliche void test1(){ //Holen Sie sich zuerst SqlSession SqlSession s=SqlSessionUtils.getSqlSession(); List<User> list=s.selectList("users.all");//Das zurückgegebene Ergebnis wird in eine Liste gekapselt und der Parameter verwendet die ID, um anzugeben, welcher Abschnitt in der Zuordnungsdatei verwendet werden soll, <select> oder <insert> und andere SQL-Operationen// List<User> list=s.selectList("all");//Namespace weglassen ---- Wenn der Name (die ID) in Konflikt steht, muss der Namespace zur Identifizierung verwendet werden//System.out.println(list); für(Benutzer u:list){ System.out.println(u); } } <span style="color:#ff0000;">//Verwenden Sie die Schnittstellenmethode, um die Datenbank zu betreiben (diese Methode wird empfohlen und ist sicherer) /*Schritte* 1. Schreiben Sie eine Schnittstelle: UserMapper. Der abstrakte Methodenname in der Schnittstelle muss mit dem Attribut-ID-Wert von <select> identisch sein, d. h. eine abstrakte Methode stellt eine Operation dar.* 2. Ändern Sie den Namespace in User2.xml in den vollständigen Klassennamen der Schnittstelle.* 3. Verwenden Sie im Testcode (Java auf der DAO-Ebene) „s.getMapper()“, um ein Proxy-Klassenobjekt abzurufen, und verwenden Sie das Objekt, um eine Methode aufzurufen, d. h. um eine bestimmte Operation auszuführen.*/</span> @Test//Schnittstellenorientierter Ansatz, folgende Aufrufe lauten: User2.xml öffentliche Leere test2(){ //Holen Sie sich zuerst SqlSession SqlSession s=SqlSessionUtils.getSqlSession(); UserMapper m=s.getMapper(UserMapper.class);//Proxy-Objekt abrufen List<User>list=m.all(); System.out.println(Liste); } ///////////////test3() demonstriert die einzelne Bedingungsabfrage in der bedingten Abfrage und ruft User2.xml auf/////////////////// @Test//Traditionelle Methode public void test3_1(){ SqlSession s=SqlSessionUtils.getSqlSession(); // Liste<Benutzer> users=s.selectList("cn.hncu.domain.UserMapper.all"); List<Benutzer> users=s.selectList("user2","2"); //Das zurückgegebene Ergebnis wird in List gekapselt und der interne Elementdateityp wird durch die Zuordnungsdatei System.out.println(users) konfiguriert; } @Test//Schnittstellenorientierter Ansatz public void test3_2(){ SqlSession s=SqlSessionUtils.getSqlSession(); BenutzerMapper u=s.getMapper(BenutzerMapper.class); Liste<Benutzer> Benutzer=u.user2("3"); System.out.println(Benutzer); } ///////////////////Abfrage mit mehreren Bedingungen (am besten verwenden Sie für die Bedingungsabfrage Bedingungen zur Objektkapselung)/////////////// @Prüfen öffentliche Leere test4(){ SqlSession s=SqlSessionUtils.getSqlSession(); BenutzerMapper u=s.getMapper(BenutzerMapper.class); Benutzer Benutzer=neuer Benutzer(); Benutzer.setId("4"); Benutzer.setName("Erdan"); Liste<Benutzer> Benutzer=u.user3(Benutzer); System.out.println(Benutzer); } @Prüfen public void test5(){//Gib das Ergebnis mithilfe der Karte zurück SqlSession s=SqlSessionUtils.getSqlSession(); System.out.println(s); Liste<Map<String,Object>> Benutzer=s.selectList("Benutzer4"); für(Map<String,Object> Benutzer:Benutzer){ System.out.println(Benutzer); } } @Test//Setzen Sie den Eingabeparameter auf Map öffentliche void test6(){ SqlSession s=SqlSessionUtils.getSqlSession(); Map<String, Objekt> map=neue HashMap<String,Objekt>(); map.put("id", "5"); map.put("Name", "Xiaoqi"); Liste<Map<String,Objekt>> Benutzer=s.selectList("user5",map); für(Map<String,Object> Benutzer:Benutzer){ System.out.println(Benutzer); } } } User2.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- Die aktuelle Konfigurationsdatei dient der Anzeige des schnittstellenorientierten Betriebsmodus--> <!-- <mapper namespace="cn.hncu.domain.UserMapper"> <select id="alle" resultType="cn.hncu.domain.User"> Wählen Sie * aus Benutzern aus </Auswählen> </mapper> --> <mapper namespace="cn.hncu.domain.UserMapper"> <!-- Verwendeter Typalias --> <select id="alle" resultType="Benutzer"> Wählen Sie * aus Benutzern aus </Auswählen> <!--Einzelbedingungsabfrage der bedingten Abfrage, die Parameter der folgenden SQL-Anweisung können beliebig geschrieben werden--> <select id="user2" resultType="Benutzer" parameterType="string"> Wählen Sie * aus Benutzern mit ID=#{xx} </Auswählen> <!--Mehrere bedingte Abfragen für bedingte Abfragen, die Parameter der folgenden SQL-Anweisungen müssen mit den Attributnamen des Wertobjekts übereinstimmen (verwenden Sie die bedingte if-Anweisung, um zu bestimmen, ob der Parameter leer ist) --> <select id="user3" resultType="Benutzer" parameterType="string"> Wählen Sie * aus Benutzern aus, wobei id=#{id} <if test="name!=null"> und name=#{name} </if> </Auswählen> <!-- Kapselt die Abfrageergebnisse in List<Map<>> ein --> <select id="Benutzer4" resultType="Karte"> Wählen Sie * aus Benutzern aus </Auswählen> <!-- Kapselt die Eingabeparameter in einen Map-Typ ein --> <select id="Benutzer5" resultType="hashmap" parameterType="hashmap"> Wählen Sie * aus Benutzern aus, wobei id=#{id} <if test="name!=null"> und name=#{name} </if> </Auswählen> </mapper> Ich sehe mybatis zum ersten Mal. Ich weiß, wie man es einfach benutzt. Ich werde das nächste Mal die spezifische, komplexe Verwendung posten (CRUD der Datenbank und einige Details während der Verwendung). Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: 8 Befehle zur effektiven Verwaltung von Prozessen in Linux
>>: Native JS-Implementierung der Lupenkomponente
Als ich das erste Mal anfing, fand ich viele Fehl...
Inhaltsverzeichnis 1. Einführung in Label-Anweisu...
Robots.txt ist eine reine Textdatei, in der Websi...
Nichtorthogonale Ränder Wenn ein Rand verwendet w...
Dieser Artikel untersucht die ES6-for...of-Schlei...
Docker fragt Bilder in einem privaten Register ab...
Der IE hat uns in der frühen Entwicklungsphase Ko...
Inhaltsverzeichnis Projekterstellung Projektstruk...
Inhaltsverzeichnis einführen Start Installieren ①...
Wenn wir die Verschachtelungsregeln grundlegender...
Ein sehr häufiges Szenario in react -Projekten: c...
•Es gibt viele Selektoren in CSS. Was passiert, w...
Inhaltsverzeichnis 1. Vue2-Syntax 2. Nutzung von ...
Was ist Vuex vuex: ist ein speziell für vue.js en...
Im Allgemeinen werden Klickereignisse in verschie...