Al seleccionar la asignación en MyBatis, el tipo de retorno se puede usar con Resulttype o ResultMap. ResultType representa directamente el tipo de retorno (correspondiente a la entidad en nuestro objeto de modelo), mientras que el resultado de resultados es una referencia al Mapas de resultado externo (la relación clave oculta-> valor de valor entre DB y modelo se define de antemano), pero el resultado y el resultado de resultados no pueden existir al mismo tiempo.
Cuando MyBatis consulta la asignación, de hecho, cada consulta de atributos se coloca en un mapa correspondiente, donde la clave es el nombre del atributo y el valor es su valor correspondiente.
① Cuando el atributo de tipo de retorno proporcionado es resultante, MyBatis eliminará los pares de valores clave en el mapa y los asignará a los atributos correspondientes del objeto especificado por resultType. Entonces, de hecho, el tipo de retorno de cada mapa de consulta de MyBatis es ResultMap. Sin embargo, cuando el atributo de tipo de retorno proporcionado es resultType, MyBatis asigna automáticamente el valor correspondiente a los atributos del objeto especificado por resultType.
② Cuando el tipo de retorno proporcionado es ResultMap, porque el mapa no puede representar bien el modelo de dominio, necesita convertirlo aún más en el objeto correspondiente en sí, lo que a menudo es muy útil en consultas complejas.
Aquí hay un ejemplo para ilustrar la diferencia entre los dos:
paquete com.clark.model; import java.util.date; Bienes de clase pública {ID de entero privado; entero privado Cateid; nombre de cadena privada; precio doble privado; Descripción de la cadena privada; Orden de entero privado; Fecha privada de actualización; Public Goods () {} Public Goods (ID de entero, Integer CateID, Nombre de cadena, precio doble, descripción de cadena, OrderNo Integer, fecha UpdateTime) {super (); this.id = id; this.cateID = cateid; this.name = name; this.price = precio; this.description = Descripción; this.OrderNo = Orderno; this.updateTime = updateTime; } public integer getId () {return id; } public void setid (ID de entero) {this.id = id; } public Integer getCateId () {return cateID; } public void setCateId (Integer cateid) {this.cateId = cateid; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public Double GetPrice () {Return Price; } public void setPrice (doble precio) {this.price = precio; } public String getDescription () {return Descripción; } public void setDescription (String Descripción) {this.description = Descripción; } public integer getOrderNo () {return ordenno; } public void setOrderNo (Integer Orderno) {this.Orderno = Orderno; } fecha pública getTimestamp () {return updateTime; } public void settimestamp (fecha updateTime) {this.updateTime = updateTime; } @Override public string toString () {return "[Bods include: id ="+this.getId ()+", name ="+this.getName ()+", ordenno ="+this.getOrderNo ()+", cateid ="+this.getCateId ()+", updetime ="+this.gettimestamp ()+"];"; }}<? xml versión = "1.0" encoding = "utf-8"?> < Alias = "bienes" type = "com.clark.model.goods"> < /typealias> < /typealiases> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager type = "jdbc" /> <dataSource type = "agrupado"> <name de propiedad = "valor" valor = "oracle.jdbc.driver.oracliver" /"n. 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> </figuration> </span>
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtdd"> <mapperspace = "CLARK"> <CLARK "> <CLARK"> <CLARKMAP type = "com.clark.model.goods" id = "t_good"> <id columna = "id" propiedad = "id"/> <resultado columna = "cate_id" propiedad = "cateid"/> <resultado columna = "name" Property = "name"/> <resultado columna = "precio" propiedad = "precio"/> <resultado columna = "DESCRIPCIS propiedad = "ordenno"/> <resultado columna = "update_time" propiedad = "updateTime"/> </resultMap> <!-La diferencia entre resultados de resultados y resultados-> <select id = "selectGoodByid" parametType = "int" resultType = "Bods"> Select ID, Cate_id, nombre, precio, descripción, Order_No, Update_Time de bienes donde ID = # # #} id = "selectallGoods" resultMap = "t_good"> select id, cate_id, nombre, precio, descripción, orden_no, update_time de mercancías </elect> <insert id = "insertGood" parametertype = "bienes"> insertar en bienes (id, cate_id, nombre, precio, descripción, orden_no, update_time) valores (#{id},#{cateid},#{name},#{precio},#{descripción},#{ordenno},#{updateTime}) </sert> </mapper> paquete com.clark.mybatis; import java.io.ioException; import java.io.reader; import java.util.list; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; importar org.apache.ibatis.session.sqlsessionFactoryBuilder; import com.clark.model.goods; public class testGoods {public static void main (String [] args) {String Resource = "Configuration.xml"; intente {lector lector = recursos.getResourCeiceSreader (recurso); SqlSessionFactory sessionFactory = new SQLSessionFactoryBuilder (). Build (Reader); Sqlsession session = sessionFactory.opensession (); </span> <span style = "font-size: 18px;"> <span style = "white-space: pre"> </span> // escenarios usando resultados de bienes de resultado = (bienes) session.selectone ("Clark.selectgoodbyid", 4); System.out.println (Goods.ToString ()); </span> [html] Ver fragmentos de código de vista de copia simple derivados de mis fragmentos de código en código <span style = "font-size: 18px;"> <span style = "White-space: pre"> </span> // Scenarios Usando resultados de resultados <ets> gs = session.selectlist ("Clak.selects. para (bienes bienes2: gs) {system.out.println (bienes2.tostring ()); } // bienes bienes = nuevos bienes (4, 12, "Clark", 12.30, "Prueba está bien", 5, nueva fecha ()); // session.insert ("Clark.insertGood", bienes); // session.commit (); } catch (ioException e) {E.PrintStackTrace (); }}}La salida del resultado es:
<span style = "color:#cc0000;"> [Los productos incluyen: id = 4, name = Clark, OrderNo = Null, Cateid = Null, UpdateTime = Null] --- Resultado usando el resultado de la Resultado </span> <span style = "color:#33FF33;"> --- Result Usando el resultado de resultados ------------------ </span>>
Lo anterior es una introducción a la diferencia entre ResultType y ResultMap en MyBatis introducido a usted. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!