So schreiben Sie Konfigurationsdateien und verwenden MyBatis einfach

So schreiben Sie Konfigurationsdateien und verwenden MyBatis einfach

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:
1. Basierend auf SQL-Syntax, einfach und leicht zu erlernen.
2. Den zugrunde liegenden Montageprozess verstehen können.
3. SQL-Anweisungen werden in Konfigurationsdateien gekapselt, was eine einheitliche Verwaltung und Wartung erleichtert und den Kopplungsgrad von Programmen verringert.
4. Einfaches Debuggen des Programms.

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); 
}


Demo1.java

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:
  • Eingehende Untersuchung und Konstruktion von Spring + SpringMVC + MyBatis (Teil 3) Analyse der globalen Konfigurationsdatei von MyBatis
  • Detaillierte Erläuterung zum Schreiben der MyBatis Batch Insert Data Mapper-Konfigurationsdatei
  • Detaillierte Erläuterung des Beispiels einer Mybatis-Projektkonfigurationsdatei
  • So schreiben und verwenden Sie die MyBatis-Konfigurationsdatei
  • So überprüfen Sie die Mybatis SqlMapper-Konfigurationsdatei mit XSD (2)
  • So überprüfen Sie die Mybatis SqlMapper-Konfigurationsdatei mit XSD (1)
  • Detaillierte Erklärung der perfektesten Konfigurationsdatei für Mybatis Generator (Vollversion)
  • Einführung in die Mybatis-Konfigurationsdatei_Powernode Java Academy

<<:  8 Befehle zur effektiven Verwaltung von Prozessen in Linux

>>:  Native JS-Implementierung der Lupenkomponente

Artikel empfehlen

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

MySQL InnoDB-Überwachung (Systemebene, Datenbankebene)

MySQL InnoDB-Überwachung (Systemebene, Datenbanke...

nuxt.js Konfiguration mehrerer Umgebungsvariablen

Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...

Detaillierte Erklärung zur Verwendung der benutzerdefinierten Vue-Baumsteuerung

In diesem Artikel erfahren Sie, wie Sie das benut...

Beispiel für die Ausführung eines MySQL-Befehlszeilenskripts

Dieser Artikel veranschaulicht anhand eines Beisp...

Django-Online-Bereitstellungsmethode von Apache

Umfeld: 1. Windows Server 2016 Datacenter 64-Bit ...

So stellen Sie das Crownblog-Projekt mit Docker in der Alibaba Cloud bereit

Front-End-Projektpaketierung Suchen Sie .env.prod...

Ein Beispiel für die Berechnungsfunktion calc in CSS im Website-Layout

calc ist eine Funktion in CSS, die zum Berechnen ...

Problem mit der Groß-/Kleinschreibung in der MySQL-Datenbank

In MySQL entsprechen Datenbanken Verzeichnissen i...

So finden Sie identische Dateien in Linux

Während der Nutzung des Computers entsteht im Sys...

So erstellen Sie schnell eine LNMP-Umgebung mit Docker (neueste Version)

Vorwort Tipp: Hier können Sie den ungefähren Inha...