Wenn Sie die Zuordnung in myBatis auswählen, kann der Rückgabetyp mit Ergebnistyp oder resultMap verwendet werden. Der resultType repräsentiert direkt den Rückgabetyp (entsprechend der Entität in unserem Modellobjekt), während resultMap eine Referenz auf den externen Ergebnismap ist (der verborgene Schlüssel-> Wert zwischen DB und Modell wird im Voraus definiert), aber das Ergebnistyp und das Ergebnismap können nicht gleichzeitig existieren.
Wenn MyBatis die Zuordnung abfragt, wird jede Attributabfrage in einer entsprechenden Karte platziert, wobei der Schlüssel der Attributname und der Wert sein entsprechender Wert ist.
① Wenn das angegebene Rückgabe -Attribut des Retyps das Ergebnistyp ist, nimmt MyBatis die Schlüsselwertpaare in der Karte aus und weisen die entsprechenden Attribute des vom Ergebnistyps angegebenen Objekts zu. Tatsächlich ist der Rückgabetyp jeder Abfragekarte von myBatis resultMap. Wenn das angegebene Attribut für Rückgabetyp jedoch ein Ergebnistyp ist, weist MyBatis automatisch den entsprechenden Wert den Attributen des vom Ergebnistyps angegebenen Objekts zu.
② Wenn der bereitgestellte Rückgabetyp resultMap ist, da die Karte das Domänenmodell nicht gut darstellen kann, muss sie es weiter in das entsprechende Objekt selbst umwandeln, was in komplexen Abfragen häufig sehr nützlich ist.
Hier ist ein Beispiel, um den Unterschied zwischen den beiden zu veranschaulichen:
Paket com.clark.model; import Java.util.date; öffentliche Klasse Waren {private Integer id; Private Ganzzahl Cateid; privater Zeichenfolge Name; privater Doppelpreis; private Zeichenfolge Beschreibung; private Ganzzahl Orderno; privates Datum Updatetime; public goods () {} öffentliche Güter (Ganzzahl -ID, Ganzzahl Cateid, String -Name, Doppelpreis, Zeichenfolge Beschreibung, Ganzzahl orderNo, Datum updatetime) {Super (); this.id = id; this.cateid = cateid; this.name = name; this.price = Preis; this.description = Beschreibung; this.orderno = orderno; this.updatetime = updateTime; } public Integer getId () {return id; } public void setId (Integer id) {this.id = id; } public Integer getcateid () {return cateid; } public void setcateId (Integer cateid) {this.cateId = Cateid; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public double getPrice () {Rückgabepreis; } public void setPrice (Doppelpreis) {this.price = price; } public String getDescription () {Rückgabe Beschreibung; } public void setDescription (String Beschreibung) {this.description = Beschreibung; } public Integer getOrderNo () {return orderNo; } public void setOrderno (Integer orderNo) {this.orderno = orderno; } public date getTimestamp () {return updatetime; } public void setTimestAMP (Datum updateTime) {this.UpDATETIME = updateTime; } @Override public String toString () {return "[Waren inklusive: id ="+this.getId ()+", name ="+this.getName ()+", orderno ="+this.getOrderno ()+", cateid ="+this.getCatId ()+, updatetime = " }}<? alias="goods" type="com.clark.model.Goods"></typeAlias> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@172.30.0.125:1521:oradb01" /> <property name="username" value="settlement" /> <property name="password" value="settlement" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/clark/model/goodsMapper.xml" /> </mappers> </configuration> </span>
<? type = "com.clark.model.goods" id = "t_good"> <id column = "id" Property = "id"/> <result column = "cate_id" Property = "Cateid"/> <resultal column = "name" name "name" name "/> <resultal" preis property="orderNo"/> <result column="update_time" property="updateTime"/> </resultMap> <!--The difference between resultMap and resultType--> <select id="selectGoodById" parameterType="int" resultType="goods"> select id,cate_id,name,price,description,order_no,update_time from goods where id = #{id} </select> <select id = "selectAllGoods" resultMap = "t_good"> id, cate_id, Name, Preis, Beschreibung, order_no, update_time aus Waren </select> <einfügen id = "insertgood" parameterType = "Waren"> in Waren einfügen (ID, Cate_id, Name, Beschreibung, Order_no, update_time) values (#{id},#{cateid},#{name},#{price},#{Beschreibung},#{orderno},#{UpdateTime}) </einfügen> </mapper> Paket com.clark.mybatis; importieren java.io.ioException; Import Java.io.reader; importieren java.util.list; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import org.apache.ibatis.session.sqlSessionFactoryBuilder; import com.clark.model.goods; public class testgoods {public static void main (String [] args) {String resource = "configuration.xml"; try {reader reader = ressourcen.getResourceAsReader (Ressource); SQLSessionFactory SessionFactory = new SQLSessionFactoryBuilder (). Build (Leser); SQLSession Session = SessionFactory.OpenSession (); </span> <span style = "Schriftgröße: 18px;"> <span style = "White-Space: PRE"> </span> // Szenarien unter Verwendung von resulttype goods = (gars) session System.out.println (Goods.toString ()); </span> [html] Ansicht von Copy-Code-Fragmenten von My Code auf Code <span style = "Schriftgröße: 18PX; für (Goods Goods2: gs) {System.out.println (Goods2.toString ()); } // Goods Goods = neue Waren (4, 12, "Clark", 12.30, "Test ist in Ordnung", 5, neues Datum ()); // Session.insert ("Clark.insertGood", Waren); // Session.commit (); } catch (ioException e) {e.printstacktrace (); }}}Die Ergebnisausgabe ist:
<span style = "color:#cc0000;"> [Waren inklusive: id = 4, name = clark, orderno = null, cateid = null, updatetime = null] --- result usertType </span> <span style = "color:#33ff33;">-res er Ergebnis mit ergebnis -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Die oben genannte Einführung in den Unterschied zwischen Ergebnistyp und Ergebnismap in MyBatis, der Ihnen vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!