Die meisten Entwickler, die MyBatis verwenden, werden auf ein Problem stoßen, das darin besteht, eine große Menge SQL in die XML -Datei zu schreiben. Zusätzlich zu einer speziellen Geschäftslogik SQL gibt es auch eine große Anzahl von SQL mit ähnlichen Strukturen. Wenn sich die Struktur der Datenbanktabelle ändert, müssen alle entsprechenden SQL- und Entitätsklassen geändert werden. Die Auswirkungen dieser Arbeitsbelastung und Effizienz können die Barriere zwischen dem Hinzufügen, Löschen, Ändern und Überprüfen von Programmierern und realen Programmierern sein. Zu diesem Zeitpunkt entstand der General Mapper ...
Was ist ein universeller Mapper
General Mapper ist ein Plug-In, das auf MyBatis basiert, um das Problem des Hinzufügens, Löschens, Änderns und Suchens von einzelnen Tabellen zu lösen. Entwickler müssen SQL nicht schreiben oder Methoden zu DAO hinzufügen. Solange sie die Entitätsklasse gut schreiben, können sie entsprechende Methoden zum Hinzufügen, Löschen, Ändern und Suchen unterstützen.
Wie man benutzt
Nehmen wir als Beispiel MySQL an und nimmt an, es gibt eine solche Tabelle:
Tabelle `test_table` (` id` bigint (20) nicht null auto_increment, `name` varchar (255) Standard '',` create_time` datetime Standard Null, `create_user_id` varchar (32) Standard -Null,` update_time "datetime Default Null,` varchar (32) # `ordnern,` # ` #` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` #user_user_user_user_user_user_user, ` #` `` `` `` ``. `is_delete` int (8) Standardnull, Primärschlüssel (` id`)) Engine = innoDB Auto_increment = 1 Standard charSet = utf8;
Der Hauptschlüssel ist ID, der von selbst zunimmt. Hier ist eine Tabelle als Beispiel, um vorzustellen, wie ein universeller Mapper verwendet wird.
MAVEN -Abhängigkeiten
<!-General MAPPER-> <De vor Ort> <gruppe> tk.mybatis </Groupid> <artifactId> mapper </artifactId> <version> 3.3.9 </Version> </abhängig>
SpringMVC -Konfiguration
<!-General Mapper-> <beanclass = "tk.mybatis.spring.mapper.mapperscannerConfigurer"> <PropertyName = "Basepackage" value = "cn.com.bluemoon.bd.Service.spider.dao"/> < mappers = tk.mybatis.mapper.common.mapper </value> </property> </bean>
Beachten Sie, dass hier tk.mybatis.spring.mapper.MapperScannerConfigure verwendet wird, um die ursprüngliche MyBatis org.mybatis.spring.mapper.MapperScannerConfigurer zu ersetzen.
Parameter verfügbar:
In den meisten Fällen werden diese Parameter nicht verwendet, und Sie können sie selbst untersuchen, wenn Sie besondere Umstände haben.
Wie man Entitäten schreibt
Denken Sie an ein Prinzip: Anzahl der Felder in der Entitätsklasse> = Anzahl der Felder, die in der Datenbanktabelle betrieben werden müssen. Standardmäßig werden alle Felder in der Entitätsklasse als Felder in der Tabelle betrieben, und wenn zusätzliche Felder vorhanden sind, muss die @Transient -Annotation hinzugefügt werden.
@Table (name = "test_table") public class testtableVoimplements Serialisierbar {private statische endgültige long serialversionuid = 1l; @ID @GeneratedValue (Generator = "JDBC") Private Long ID; @Transient private String userID; privater Zeichenfolge Name; privates ZeitstempelkreatTime; private String createUserid; privates Zeitstempel -Updetime; private String updateUserid; Private Ganzzahl isdelete; // Get, set ...} weglassenveranschaulichen:
Wie man dao schreibt
Im herkömmlichen MyBatis -Schreiben muss die DAO -Schnittstelle mit der Mapper -Datei zugeordnet werden, dh SQL muss geschrieben werden, um Methoden in der DAO -Schnittstelle zu implementieren. Im Allgemeinen muss DAO nur eine gemeinsame Schnittstelle erben, um reichhaltige Methoden zu haben:
Erben des generischen Mapper, Generika müssen angegeben werden
public interface testtableaoextends mapper <TestTableVo> {}Sobald Sie Mapper erben, verfügt der ererbte Mapper über alle gemeinsamen Methoden von Mapper:
Wählen
Methode: List <T> Select (t -Datensatz);
HINWEIS: Abfrage basierend auf dem Attributwert in der Entität und verwenden Sie gleiche Zeichen für Abfragebedingungen
Methode: t SelectByprimaryKey (Objektschlüssel);
HINWEIS: Abfragen Sie basierend auf dem Feld Primärschlüssel. Die Methodenparameter müssen vollständige Primärschlüsselattribute enthalten. Die Abfragebedingungen verwenden gleiche Zeichen.
Methode: List <T> selectAll ();
HINWEIS: Abfragen Sie alle Ergebnisse ab, die Methode Select (NULL) ausgewählt (NULL) kann den gleichen Effekt erzielen
Methode: t SelectOne (t -Datensatz);
Hinweis: Abfragen nach den Eigenschaften in der Entität kann nur einen Rückgabewert geben und mehrere Ergebnisse werden geworfen. Die Abfragebedingungen verwenden gleiche Zeichen.
Methode: int selectCount (T -Datensatz);
Hinweis: Fragen Sie die Gesamtzahl der Attribute in der Entität ab und verwenden Sie das gleiche Vorzeichen für die Abfragebedingungen.
Einfügen
Methode: Int Insert (t -Datensatz);
Hinweis: Speichern Sie eine Entität, das NULL -Attribut wird ebenfalls gespeichert und der Datenbank -Standardwert wird nicht verwendet.
Methode: INT InsertSeLective (T -Datensatz);
Hinweis: Speichern Sie eine Entität, das NULL -Attribut wird nicht gespeichert und der Datenbank -Standardwert wird verwendet.
Aktualisieren
Methode: int UpdateByprimaryKey (t -Datensatz);
Hinweis: Aktualisieren Sie alle Felder der Entität gemäß dem Primärschlüssel, der Nullwert wird aktualisiert
Methode: INT UpdateByprimaryKeysselective (t Record);
Beschreibung: Aktualisieren Sie den Wert, dessen Attribut nicht entsprechend dem Primärschlüssel ist
Löschen
Methode: int delete (t -Datensatz);
HINWEIS: Verwenden Sie gemäß den Entitätsattributen als Bedingungen gleiche Zeichen für Abfragebedingungen
Methode: int deleteByprimaryKey (Objektschlüssel);
Hinweis: Löschen gemäß dem Feld Primärschlüssel müssen Methodenparameter vollständige Primärschlüsselattribute enthalten
Beispielmethode
Methode: List <T> selectByExample (Objektbeispiel);
Beschreibung: Abfragen nach Beispielbedingungen
Schlüsselpunkt: Diese Abfrage unterstützt die Angabe von Abfragespalten durch die Beispielklasse und die Angabe von Abfragebränen über die Methode SelectProperties.
Methode: int selectCountByExample (Objektbeispiel);
Beschreibung: Fragen Sie die Gesamtzahl gemäß den Beispielbedingungen ab
Methode: int updateByExample (@param ("record") t record, @param ("Beispiel") Objektbeispiel);
Beschreibung: Aktualisieren Sie alle Eigenschaften, die im Entitätsdatensatz gemäß den Beispielbedingungen enthalten sind, und der Nullwert wird aktualisiert.
Methode: int updateByExamplesSelective (@param ("record") t record, @param ("Beispiel") Objektbeispiel);
Beschreibung: Aktualisierung des Entitätsdatensatzes gemäß den Beispielbedingungen enthält den Eigenschaftswert, der nicht null ist
Methode: int deleteByExample (Objektbeispiel);
Beschreibung: Daten gemäß den Beispielbedingungen löschen
Verwendet im Code
DAO in Dienst einfügen und es ist bereit zu nutzen.
@AutowiredPrivate TestTableDao TestTableDao;
Das Folgende ist eine allgemeine Art des Schreibens:
Neu
Testtablevo vo = new TestTableVo (); // Die Einstellungseigenschaften für VO ... int row = testtabledao.insertSelective (VO) auslassen;
Überarbeiten
Testtablevo vo = new TestTableVo (); // Die Einstellungseigenschaften für VO ... int row = testtabledao.updatbyprimaryKeysselective (Vo) weglassen;
Fragen Sie eine Single ab
Testtablevo vo = new TestTableVo (); vo.setID (123L); testtableVo result = TestTableDao.Selectone (VO);
Bedingte Anfrage
// Beispielexample -Beispiel = Neue Beispiel (testtableVo.class); // Kriterien erstellen. Kriterien Kriterien = Beispiel.Createcriteria (); // Bedingungskriterien hinzufügen.Andequalto ("isdelete", 0); Kriterien.Andy und "Name", "%ABC123%"). Zusammenfassen
Das Prinzip von General Mapper besteht darin, die Informationen von Entitätsklassen durch Reflexion zu erhalten und die entsprechende SQL zu konstruieren. Daher müssen wir nur die Entitätsklassen aufrechterhalten, was eine große Bequemlichkeit für die Bewältigung komplexer und veränderlicher Bedürfnisse bietet. Die obige Beschreibung ist nur eine einfache Verwendung von General Mapper. In den tatsächlichen Projekten sollten wir immer noch eine größere, allgemeinere und besser verwendete Methode basierend auf dem allgemeinen Mapper basierend auf dem Unternehmen zusammenfassen.
Mit der Federstartkonfiguration
Maven
<!-mybatis-> <depeaponcy> <GroupId> org.mybatis.spring.boot </Groupid> <artifactId> myBatis-pring-boot-starter </artifactId> <version> 1.3.1 </Version> </abhängig> <! <artifactId> mapper-pring-boot-starter </artifactId> <version> 1.1.4 </Version> </abhängig>
application.Properties Konfiguration
#Mapper#Mappers Comma Separated mappper.mappers = tk.mybatis.mapper.common.mapperMapper.NOT-TEMPTY = FALSEMAPPER.Identity = MySQL
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.