


Detaillierte Analyse der Unterschiede und Zusammenhänge zwischen resultType und resultMap in mybatis
Bei der Verwendung von mybatis für Datenbankverbindungsvorgänge gibt es normalerweise zwei Möglichkeiten, die von SQL-Anweisungen zurückgegebenen Ergebnisse zu verarbeiten. Eine davon ist resultType und die andere ist resultMap 🎜>
Zum Beispiel verwendet die Einzeltabellenabfrage, die wir normalerweise verwenden, häufig resultType
Kommen Sie runter und schauen Sie sich einen Code an
1 package org.cxxy.base.cxsc.entity; 2 3 public class TbClass { 4 private Integer id; 5 6 private String classname; 7 8 private String deptname; 9 10 public Integer getId() {11 return id;12 }13 14 public void setId(Integer id) {15 this.id = id;16 }17 18 public String getClassname() {19 return classname;20 }21 22 public void setClassname(String classname) {23 this.classname = classname == null ? null : classname.trim();24 }25 26 public String getDeptname() {27 return deptname;28 }29 30 public void setDeptname(String deptname) {31 this.deptname = deptname == null ? null : deptname.trim();32 }33 }
Komm runter und fang an, meinen XML-Mapper einzufügen
<resultMap id="BaseResultMap" type="org.cxxy.base.cxsc.entity.TbClass"><id column="id" jdbcType="INTEGER" property="id" /><result column="classname" jdbcType="VARCHAR" property="classname" /><result column="deptname" jdbcType="VARCHAR" property="deptname" /></resultMap>
und stellt die einzelne Tabellenabfrageanweisung meines XML-
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select id, classname, deptname from tb_class where id = #{id,jdbcType=INTEGER} </select>
<br>
Der obige Code stellt eine einzelne Tabellenabfrage dar (eins zu eins). Natürlich verwenden wir in der allgemeinen Entwicklung für diese Art der Zuordnung normalerweise die folgende Schreibmethode
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="类的全限定名">select id, classname, deptname from tb_class where id = #{id,jdbcType=INTEGER}</select>
Wenn sich jedoch die Bedürfnisse des Kunden ändern, beispielsweise eine Erweiterungsklasse Die Klasse wird geschrieben
org.cxxy.base.cxsc.entity.TbClassDatail
resultMap
定义po类 在Orders类中加入User属性。 在Orders类中加入List<Orderdetail> orderdetails属性
<select id="findOrdersDetailList" resultMap="userorderdetailmap">SELECT orders.*, user.username, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.items_num FROM orders,user,orderdetail WHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id</select>
<!-- 订单信息resultmap --><resultMap type="cn.itcast.mybatis.po.Orders" id="userorderdetailmap"><id property="id"column="id"/><result property="user_id" column="user_id"/><result property="number" column="number"/><association property="user" javaType="cn.itcast.mybatis.po.User"><id property="id" column="user_id"/><result property="username" column="username"/><result property="address" column="address"/></association><collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail"><id property="id" column="orderdetail_id"/><result property="items_id" column="items_id"/><result property="items_num" column="items_num"/></collection></resultMap>
Die Beziehung zwischen der oben genannten Entität Die Klassen lauten: Order----->Benutzerpaar Eins (eine Bestellung für einen Benutzer) Order------->OrderDetail Eins-zu-viele (eine Bestellung hat mehrere Bestelldetails)
Bei der Zuordnung von Eins-zu-Viele- und Viele-zu-Viele-Abfragen wie dieser versuchen wir, resultMap zu verwenden
Der Unterschied zwischen resultType und resultMap in MyBatis注:collection 标签是一对多的映射,常用于一对多中扩展类下的List<po对象>的属性 association标签适用扩展类包含的一对一的po类对象属性
In MyBatis, wann Beim Abfragen einer ausgewählten Zuordnung kann der Rückgabetyp resultType, resultMap, resultType sein. Er stellt direkt den Rückgabetyp dar (entsprechend der Entität in unserem Modellobjekt), und resultMap ist ein Verweis auf die externe ResultMap (die implizite Schlüssel-->Wert-Beziehung). zwischen Datenbank und Modell wird im Voraus definiert), aber resultType Es kann nicht gleichzeitig mit resultMap existieren.
Wenn MyBatis eine Abfragezuordnung durchführt, wird jedes abgefragte Attribut tatsächlich in einer entsprechenden Map platziert, wobei der Schlüssel der Attributname und der Wert der entsprechende Wert ist. ①Wenn das bereitgestellte Rückgabetypattribut resultType ist, entnimmt MyBatis die Schlüssel-Wert-Paare in der Map und weist sie den Attributen zu, die dem durch resultType angegebenen Objekt entsprechen. Tatsächlich ist der Rückgabetyp jeder Abfragezuordnung von MyBatis ResultMap, aber wenn das bereitgestellte Rückgabetypattribut resultType ist, weist MyBatis automatisch den entsprechenden Wert dem Attribut des durch resultType angegebenen Objekts zu.
②Wenn der bereitgestellte Rückgabetyp resultMap ist, müssen Sie es selbst weiter in das entsprechende Objekt konvertieren, da Map das Domänenmodell nicht gut darstellen kann, was bei komplexen Abfragen oft sehr nützlich ist.
Zusammenfassend
resultType:
Funktion:
Ordnen Sie die Abfrageergebnisse dem Pojo entsprechend der Konsistenz des SQL-Spaltennamens zu. Pojo-Attributname ( gilt nur für die Abfrage einer einzelnen Tabelle.
Gelegenheit:
Es ist üblich, einige detaillierte Datensätze anzuzeigen, z. B. Kaufdetails des Benutzers. Wenn alle zugehörigen Abfrageinformationen auf der Seite angezeigt werden, können Sie resultType direkt verwenden, um jeden Datensatz zuzuordnen Um zu einem Pojo zu gelangen, durchlaufen Sie einfach die Liste (Pojo in der Liste) auf der Front-End-Seite.
Das obige ist der detaillierte Inhalt vonDetaillierte Analyse der Unterschiede und Zusammenhänge zwischen resultType und resultMap in mybatis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



iBatis vs. MyBatis: Wofür sollten Sie sich entscheiden? Einführung: Mit der rasanten Entwicklung der Java-Sprache sind viele Persistenz-Frameworks entstanden. iBatis und MyBatis sind zwei beliebte Persistenz-Frameworks, die beide eine einfache und effiziente Lösung für den Datenzugriff bieten. In diesem Artikel werden die Funktionen und Vorteile von iBatis und MyBatis vorgestellt und einige spezifische Codebeispiele gegeben, die Ihnen bei der Auswahl des geeigneten Frameworks helfen. Einführung in iBatis: iBatis ist ein Open-Source-Persistenz-Framework

Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

Mehrere Möglichkeiten zur Implementierung von Batch-Löschanweisungen in MyBatis erfordern spezifische Codebeispiele. Aufgrund der zunehmenden Datenmenge sind Batch-Operationen in den letzten Jahren zu einem wichtigen Bestandteil von Datenbankoperationen geworden. In der tatsächlichen Entwicklung müssen wir häufig Datensätze in der Datenbank stapelweise löschen. Dieser Artikel konzentriert sich auf verschiedene Möglichkeiten zur Implementierung von Batch-Löschanweisungen in MyBatis und stellt entsprechende Codebeispiele bereit. Verwenden Sie das foreach-Tag, um eine Stapellöschung zu implementieren. MyBatis stellt das foreach-Tag bereit, mit dem ein Satz problemlos durchlaufen werden kann.

JPA und MyBatis: Vergleichende Analyse von Funktion und Leistung Einführung: In der Java-Entwicklung spielt das Persistenz-Framework eine sehr wichtige Rolle. Zu den gängigen Persistenz-Frameworks gehören JPA (JavaPersistenceAPI) und MyBatis. In diesem Artikel wird eine vergleichende Analyse der Funktionen und Leistung der beiden Frameworks durchgeführt und spezifische Codebeispiele bereitgestellt. 1. Funktionsvergleich: JPA: JPA ist Teil von JavaEE und bietet eine objektorientierte Datenpersistenzlösung. Es wird eine Annotation oder X übergeben

Für eine ausführliche Erläuterung der Verwendung von MyBatis-Batch-Löschanweisungen sind spezifische Codebeispiele erforderlich. Einführung: MyBatis ist ein hervorragendes Persistenzschicht-Framework, das umfangreiche SQL-Operationsfunktionen bietet. In der tatsächlichen Projektentwicklung stoßen wir häufig auf Situationen, in denen Daten stapelweise gelöscht werden müssen. In diesem Artikel wird die Verwendung von MyBatis-Batch-Delete-Anweisungen ausführlich vorgestellt und spezifische Codebeispiele angehängt. Verwendungsszenario: Beim Löschen einer großen Datenmenge in der Datenbank ist es ineffizient, die Löschanweisungen einzeln auszuführen. An dieser Stelle können Sie die Batch-Löschfunktion von MyBatis verwenden

Ausführliche Erklärung des First-Level-Cache von MyBatis: Wie kann die Effizienz des Datenzugriffs verbessert werden? Während des Entwicklungsprozesses war der effiziente Datenzugriff schon immer einer der Schwerpunkte der Programmierer. Für Persistenzschicht-Frameworks wie MyBatis ist Caching eine der Schlüsselmethoden zur Verbesserung der Datenzugriffseffizienz. MyBatis bietet zwei Caching-Mechanismen: Cache der ersten Ebene und Cache der zweiten Ebene. Der Cache der ersten Ebene ist standardmäßig aktiviert. In diesem Artikel wird der Mechanismus des First-Level-Cache von MyBatis ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern

Analyse des MyBatis-Caching-Mechanismus: Der Unterschied und die Anwendung von First-Level-Cache und Second-Level-Cache Im MyBatis-Framework ist Caching eine sehr wichtige Funktion, die die Leistung von Datenbankoperationen effektiv verbessern kann. Unter diesen sind der First-Level-Cache und der Second-Level-Cache zwei häufig verwendete Caching-Mechanismen in MyBatis. In diesem Artikel werden die Unterschiede und Anwendungen von First-Level-Cache und Second-Level-Cache im Detail analysiert und spezifische Codebeispiele zur Veranschaulichung bereitgestellt. 1. Level-1-Cache Der Level-1-Cache wird auch als lokaler Cache bezeichnet. Er ist standardmäßig aktiviert und kann nicht deaktiviert werden. Der Cache der ersten Ebene ist SqlSes

MyBatisGenerator ist ein offiziell von MyBatis bereitgestelltes Codegenerierungstool, mit dem Entwickler schnell JavaBeans, Mapper-Schnittstellen und XML-Zuordnungsdateien generieren können, die der Datenbanktabellenstruktur entsprechen. Bei der Verwendung von MyBatisGenerator zur Codegenerierung ist die Einstellung der Konfigurationsparameter von entscheidender Bedeutung. Dieser Artikel beginnt aus der Perspektive der Konfigurationsparameter und untersucht eingehend die Funktionen von MyBatisGenerator.
