Al aprender Hibernate, el editor ha estado expuesto a varias asignaciones. ¿Cómo funciona el mapeo en mybatis? En esta publicación de blog de hoy, el editor presentará principalmente brevemente el mapeo avanzado en MyBatis, incluidos uno a uno, uno a muchos y muchos a muchos. Espero que cada vez más amigos necesitados sean útiles. El editor presenta principalmente el modelo de datos de productos de pedido, consulta individual, consulta de uno a muchos y muchas a muchos.
1. Ordene el modelo de datos de productos
1. El script de ejecución de la base de datos es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> Crear elementos de la tabla (id int no nulo Auto_incement, elementos Name Varchar (32) No Null Comment 'Nombre del producto', Price Float (10,1) No Null Comment 'Product Price', Comentario de texto Detalle 'Descripción del producto', Descripción del producto ', Pic Varchar (64) NULL NULL NULL NULL' COMENTARIO 'PROGRAMA', IMAGEN ', IMAGEN', COMENTO DEL CREADIME DEL PRODUCTO NO PRESIDAD NO DETIMA DEL PRODECTIVO DEL PRODUCTO ''. Clave primaria (id)) Charset predeterminado = UTF8; /*Table structure for table `orderdetail` */ CREATE TABLE orderdetail ( id INT NOT NULL AUTO_INCREMENT, orders_id INT NOT NULL COMMENT 'Order id', items_id INT NOT NULL COMMENT 'Product id', items_num INT DEFAULT NULL COMMENT 'Product Purchase Quantity', PRIMARY KEY (id), KEY `FK_orderdetail_1` (`orders_id`), KEY `Fk_orderDetail_2` (` items_id`), restricción `fk_orderDetail_1` clave extranjera (` orders_id`) referencias `orders` (` id`) en Eliminar ninguna acción en actualización sin acción, restriction `fk_orderDetail_2` clave extranjera (` items_id`) referencias `’ ’’ `item '(` id' Charset = utf8; / *Estructura de la tabla para la tabla `Orders` */ Crear órdenes de tabla (ID int no nulo Auto_Increment, user_id int no nulo Comentario 'ID de pedido', número Varchar (30) no NULL comentario 'Número de pedido', CreateTime DateTime no NULL COMENT 'Crear tiempo de pedido', Nota Varchar (100) NULL COMENTARIO 'Nota', Key primaria (` ID`), KEY `FK_ORDERS Restricción `FK_ORDERS_ID` CLAVE EXTRANJERO (` USER_ID`) Referencias `t_user` (` id`) en Eliminar sin acción en la actualización sin acción) Charset predeterminado = utf8; / *Estructura de la tabla para la tabla `t_user` */ Crear tabla t_user (id int no null auto_incement, username varchar (32) no nulo comentario 'nombre de usuario', fecha de cumpleaños predeterminada nulo comentario 'cumpleaños', char (1) comentario predeterminado 'Út', género ', dirección varcar (256) NULL comment' dirección ', clave primaria (` id`)) predeterminada = utf8 utf8; </span>
Código de datos de prueba
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;">/ *Datos para la tabla `elementos ' */ Insertar en elementos (elementos Nombre, precio, detalle, PIC, createTime) Valores (' Desktop ', 3000.0,' ¡Esta computadora es de gran calidad! ', Null,' 2015-07-07 13:28:53 '),,, ('Cuaderno', 6000.0, 'cuaderno', buen rendimiento, buena calidad! ', NULL,' 2015-07-08 13:22:57 '), (' mochila ', 200.0,' mochila de marca de clase, alta capacidad y buena calidad! ', NULL,' 2015-07-010 13:25:02 '); / *Datos para la tabla `OrderDetail` */ Insert en` OrderDetail` (`Orders_id`,` items_id`, `items_num`) (1,1,1), (1,2,3), (2,3,4), (3,2,3); / *Datos para la tabla `Orders` */ Insert en` Orders` (`User_id`,` Number`, `CreateTime`,` nota`) valores (1, '1000010', '2015-06-04 13: 22: 35', null), (1, '1000011', '2015-07-08 13: 22: 41', null), (2, '1000012', '2015-07-17 14: 13: 23', nulo), (3, '1000012', '2015-07-16 18: 13: 23', null), (4, '1000012', '2015-07-07-15 19: 13: 23', null), (5, '1000012', '2015-07-14 17: 13: 23, 23, 23), NULL), (5,' 1000012 ',' 2015-07-14 17: 13) (6, '1000012', '2015-07-13 16: 13: 23', nulo); / *Datos para la tabla `user` */ inserte en` t_user` (`username`,` birthday`, `sex`,` dirección ') valores (' wang wu ', null,' 2 ', null), (' zhang san ',' 2014-07-07-0 ',' 1 '', 'beijing'), ('zhang' Xiaoming ', Null,' 1 ',' Zhengzhou, Henan '), (' Chen Xiaoming ', Null,' 1 ',' Zhengzhou, Henan '), (' Zhang Sanfeng ', Null,' 1 ',' Zhengzhou, Henan '), (' Zhang Sanfeng ', Null,' 1 ',', 'Zhengzhu, Henan') ('Chen Xiaoming', Null, '1', 'Zhengzhou, Henan'), ('Wang Wu', Null, Null, Null), ('Xiao a', '2015-06-27', '2', 'Beijing'), ('Xiao B', '2015-06-27', '2', 'Beijing'), ('xaia. C ',' 2015-06-27 ',' 1 ',' Beijing '), (' Xiao D ',' 2015-06-27 ',' 2 ',' Beijing '); </span>2. Ideas de análisis del modelo de datos
(1). Contenido de datos registrado en cada tabla: Familiarícese con el contenido registrado en cada tabla en módulos, que es equivalente al proceso de requisitos del sistema de aprendizaje (funciones);
(2). Configuración de campo importante para cada tabla: campos no vacíos, campos de claves exteriores;
(3). La relación entre las tablas y tablas a nivel de base de datos: relación clave extranjera;
(4). Relación comercial entre las tablas: al analizar la relación comercial entre las tablas, debe basarse en un cierto significado comercial de analizar.
3. Análisis de ideas de bases de datos para modelos de productos de pedidos, como se muestra en la figura a continuación:
2. Consulta uno a uno
2.1. Requisitos: Información del pedido de consulta e información asociada al usuario
2.2. Implementación de resultado
2.2.1 Declaración SQL
Determine la tabla principal de la consulta: la tabla de pedidos, determine la tabla de asociación de la consulta, la tabla de usuario, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> Seleccione T1.*, T2.Username, T2.Sex, T2.Address de los Ordenes T1, T_user T2 donde T1.user_id = T2.id </span>
2.2.2 Crear una entidad de entidad
La entidad de usuario user.java, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.entity; import java.util.date; import java.util.list; / ** * @classname: user * @Description: TODO (entidad de usuario) * @author ahvari */ public class user {private entero ID; // Nombre del nombre de usuario de cadena privada; // sexo de cuerda privada de género; // Dirección de la dirección de cadena privada; // cumpleaños de cita privada de cumpleaños; // Lista privada de Lista de Ordenes creadas por el usuario <Sders> OrdersList; // Getter and Setter ......} </span>Órdenes de la entidad de pedido.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.entity; import java.util.date; import java.util.list; / *** @ClassName: Orders* @Description: TODO (Entidad de pedido)* @Author Ahvari*/ Public Class Orders {/ ** ID de pedido de clave principal*/ ID de Integer Private; / ** Pedir ID de usuario*/ privado entero de usuarioid; / ** Número de pedido*/ Número de cadena privada; / ** Tiempo de pedido*/ Fecha privada CreateTimeMe; / ** nota*/ Nota de cadena privada; // Información del usuario Usuario privado; // Detalles de pedido Lista privada <OrderDetail> OrderDetails; // Getter and Setter ......} </span>Entidad del producto: elementos.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.entity; import java.util.date; / *** @classname: elementos* @Description: TODO (Clase de entidad del producto)* @author ding guohua*/ public class {/ ** Tabla de producto ID de clave principal*/ ID de Integer Private; / ** Nombre del producto*/ String private String ArtemSname; / ** Precio del producto*/ Precio de flotación privada; / ** Descripción del producto*/ Detalle de cadena privada; / ** Imagen del producto*/ Imagen de cadena privada; / ** Fecha de producción*/ Fecha privada CreateTimeMe; // Getter and Setter ......} </span>Pedido detallado entidad ordendetail.java
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.entity; / *** @ClassName: OrderDetail* @Description: TODO (Entidad de detalles del pedido)* @Author Ding Guohua*/ Public Class OrderDetail {/ ** Main, ID de lista de detalles*/ ID de Integer privado; / ** id*/ private entero OrderSID; / ** ID de producto*/ privado Integer ElementsId; / ** Cantidad de compra del producto*/ Integer Integer PrivateSnum; // Información del producto correspondiente a los detalles elementos privados elementos; // Getter and Setter ......} </span>Cree una clase de envoltura para mapear toda la información de consulta a esta clase OrderScustom.java
<span style = "font-family: cómic sans ms; font-size: 18px;">/ ** * @classname: orderScustom * @Description: toDo (la clase extendida de órdenes, que mapea los pedidos y los resultados de la consulta de usuario a través de esta clase para permitir esta clase a Inherit más entidades) * @author: ding Guohua */ Public Class OrdersCustom. Atributos Nombre de usuario de cadena privada; sexo de cuerda privada; dirección de cadena privada; // Getter and Setter ......} </span>
2.2.3 Crear ordersccustommapper.java, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.mapper; import java.util.list; import com.mybatis.entity.orderscustom; / *** @classname: OrderSMapperCustom* @Description: TODO (OrderSMapperCustom MAPPER)* @Author Ding Guohua*/ Public Interface OrdersCustOmmapper {/ ** Orders de consulta, Información de usuario de la consulta de asociación*/ Lista pública <OrderScustom> FindOrderSuser (); } </span>2.2.4 Crear orderscustommapper.xml es el mismo que el nombre de la interfaz correspondiente. Al cargar el archivo de configuración a través de la interfaz mapper, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <? 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.dtd"> <!-espacio de nombres de espacio de nombres, la función es clasificar la administración de SQL, que se entiende como una nota de aislamiento SQL: cuando se usa el desarrollo del agente mapper, el espacio de nombres tiene una función especial, el espacio de nombres es igual a la dirección de la interfaz de mapper-> < namespace = "com.mybatis.mapper.ordersCustommapper"> <!-Orders de consultas, Información del usuario de la consulta de asociación-> <select id = "FindOrderSuser" resultType = "com.mybatis.entity.ordersCustom"> Seleccionar T1.*, T2.Username, T2.Sex, T2.address de Orders T1, T2, T2 Seleccionar T2. t1.user_id = t2.id </select> </ mapper> </span>
2.3 Implementación de resultados de resultados
2.3.1 Declaración SQL igual que la anterior
2.3.2 Ideas de mapeo de mapas de resultados:
Use ResultMap para asignar la información de pedido en el resultado de la consulta al objeto Orders, agregue el atributo de usuario en la clase de pedidos y asigne la información del usuario de consulta asociada al atributo de usuario en el objeto Orders (se ha agregado en la entidad de pedidos anterior).
2.3.3 OrderScustomMapper.xml
1. Definir resultados de resultados, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <!-Defina el resultado de resultados del usuario asociado de orden de consulta, asigne el resultado completo de la consulta a com.mybatis.entity.orders-> <resultmap type = "com.mybatis.eNity.orders" id = "orderSusreRestermap"> <<<<<Sele the MAPPPINE INFORMACIÓN-INFORMACIÓN DEL MAPEPETRE-INFORMACIÓN-INFORMACIÓN-INFORMACIÓN-INFORMACIÓN-INFORMACIÓN-INFORMACIÓN-<!-INFORMACIÓN DE MAPILLO-; ID: El identificador único en la columna de consulta, el identificador único en la información del pedido. If multiple columns form a unique identifier (such as: the dictionary table in general database design uses a joint primary key), multiple ids need to be configured column: Unique identification column for order information property: The attribute mapped to the order information by the unique identification column for order information (if: the primary key in the orders table in the database is orders_id, and the entity attribute name is ordersId, then this configuration should be <id columna = "Orders_id" Property = "OrderSID"/>, similar a la configuración del archivo de mapeo de entidad Hibernate). -> <id columna = "id" propiedad = "id"/> <resultado columna = "user_id" propiedad = "userid"/> <resultado column = "number" Property = "number"/> <resultado column = "createTime" Property = "CreateTime"/> <resultado columna = "nota" Propiedad = "Nota"/> <Result COLUMNA = "NOTA"/> <Result COLUMA = "Propiedad" Nota = "Nota"/"Nota"/"-Configuración de Configuración de Configuración-Configuración-Configuración-Configuración-Configuración-Configuración-¡Configuración-Configuración-Configuración- Asociación: Información utilizada para mapear la consulta asociada Propiedad de objeto único: para asignar la información del usuario de la consulta asociada a la que la propiedad en los pedidos-> <asociación propiedad = "usuario" javatype = "com.mybatis.entity.user"> <!-id: el identificador único de la columna de usuario de la consulta asociada: especificar la columna de la columna que no se identifica la propiedad de la información del usuario: la propiedad mapeada a la usuaria-> "Id columna" Property = "id"/> <resultado columna = "userName" Property = "UserName"/> <resultado columna = "Sex" Property = "Sex"/> <resultado columna = "Dirección" Property = "Dirección"/> </socation> </resultadomap> </span>
2. Definición de la declaración, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <!-Orders de consulta, Información del usuario de la consulta de asociación, use ResultMap para implementar-> <Select id = "FindorSusReserResultMap" ResultMap = "OrderSUserReSultMap"> Seleccionar T1.*, T2.Username, T2.sex, T2.address de OrdersMap ", seleccione T1.*, T2. t1.user_id = t2.id </select> </span>
3. Agregue el siguiente método a la interfaz ordencustommapper.java:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;">/ ** Información del usuario de la Asociación de orden de orden de consultas, use RESLUTMAP para implementar*/ Public List <Orders> FindorDersUserResultMap (); </span>
4. La prueba JUnit de la implementación de resultados y resultados de resultados, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> paquete com.mybatis.test; import java.io.inputstream; import java.util.list; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlsessionFactory; importar org.apache.ibatis.session.sqlsessionFactoryBuilder; importar org.junit.before; importar org.junit.test; import com.mybatis.entity.orders; import com.mybatis.entity.orderscustom; import com.mybatis.mapper.orderscustommapper; clase pública OrdersCustOmmperTest {private sqlsessionFactory sqlsessionFactory; // Este método es ejecutar @bebore public void setup () lanza la excepción {String Resource = "SqlMapConfig.xml"; InputStream InputStream = Resources.GetResourCeASStream (recurso); // Crear sqlSessionfcatory sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (InputStream); } // consulta el orden, asocia la información del usuario de la consulta y usa ResultType para implementar la prueba @test public void testFindorDersUser () {SQLSession SQLSession = SQLSessionFactory.opensession (); // Cree el objeto proxy OrderScustOmmperper OC = SQLSession.getMapper (OrderSCustOmperper.Class); // Lista de métodos mapper <OrderScustom> list = OC.FindORDERSUSER (); System.out.println (lista); sqlsession.close (); } // consulta el orden, asocia la información del usuario de la consulta y las pruebas implementadas utilizando el resultado map @test public void testFindORDERSUSERSULTMAP () {sqlSession sqlsession = sqlsessionFactory.opensession (); // Crear objeto proxy OrdersCustOmmper OC = sqlsession.getMapper (OrderSCustOmperper.Class); // Lista de métodos mapper <sders> list = oC.FindORDERSUSERRESSULTMAP (); System.out.println (lista); sqlsession.close (); }} </span>5. Resulttype y ResultMap implementan un resumen de consulta individual
Implementar una consulta individual:
A.ResultType: es relativamente simple de implementar utilizando resultType. Si el nombre de la columna de consulta no está incluido en el POJO, debe agregar los atributos correspondientes del nombre de la columna para completar el mapeo.
b. Si no hay requisitos especiales para los resultados de la consulta, se recomienda utilizar el resultado de los resultados.
C.ResultMap: el resultado de resultados debe definirse por separado, lo cual es un poco problemático. Si hay requisitos especiales para los resultados de la consulta, el uso de ResultMap puede completar los atributos del mapeo de consultas asociado POJO.
d.ResultMap puede implementar la carga perezosa, el Tittype no puede implementar la carga perezosa.
3. UNA A MUCHA QUERY
3.1 Requisitos: pedidos de consulta (usuarios asociados) y detalles del pedido;
3.2 Agregue la lista <OrderDetail> Propiedad de OrderDetails en la clase de pedidos.java (se ha agregado la entidad anterior). Finalmente, la información del pedido se asignará a los pedidos, y los detalles del pedido correspondientes a la orden se asignan a la propiedad de OrdenDetails en pedidos.
3.3 Agregue lo siguiente en OrderScustomMapper.xml
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <!-Consulta Asociación de pedidos Usuario de consulta y detalle de pedido-> <select id = "FindORDERSAndOrderDetailResultMap" resultMap = "OrderDersandDetailResultMap"> SELECT T1.*, T2.Username, T2.sex, t2.address, T3.id T3.id, T3.id, T3.id, T.id, SELEC t3.Items_id, t3.items_num, t3.orders_id de los órdenes t1, t_user t2, orderDetail t3 donde t1.user_id = t2.id y t3.orders_id = t1.id </elect> </span>
La definición de resultados de resultados también se agrega a OrderScustomMapper.xml
<span style = "Font-Family: Comic Sans MS; Font-size: 18px;"> <!-ResultMap para consultar pedidos (usuarios asociados) y detalles de pedido-> <resultmap type = "com.mybatis.entity.orders" Id = "OrderDetEdEdationResultResultMap" Extendes = "OrderSoReserReReResultMap"> <<<<<. Use extiende la herencia, no configure la asignación de la información del pedido y la información del usuario en él-> <!-Información de detalle de pedido asociada Una consulta de asociación de pedidos tiene detalles de múltiples pedidos. You need to use collection mapping collection: Map multiple records queried in the association property to the collection property ofType: Specify the type of pojo in the mapped collection property--> <collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"> <!-- id: Unique identification property: To map the unique identifier of the order details to the property of com.mybatis.entity.orderDetail -> <id columna = "ordendetail_id" propiedad = "id"/> <resultado columna = "items_id" propiedad = "itemsID"/> <result columna = "items_num" Property = "itemsnum"/> <resultado columna = "Orders_id" Property = "OrderSid"/> </Collection> </sultMap> </span> </span>
3.4 Agregue un método a la clase de interfaz de OrderCustomEMapper.Java, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;">/ ** Orden de consulta (usuarios asociados) y los detalles de orden*/ Lista pública <OrderDetail> FindORDERSAndOrderDetailResultMap (); </span>
3.5 Agregar métodos de prueba a la clase de prueba JUnit, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> // Prueba para consultar pedidos (usuarios asociados) y detalles de pedido @Test Public void testFindordersAnderDetailResultMap () {sqlSession sqlsession = sqlSessionFactory.opensession (); // Crear objeto proxy OrdersCustOmmper OC = sqlsession.getMapper (OrderSCustOmperper.Class); // Lista de métodos mapeadores de llamadas <OrderDetail> list = OC.FindORDERSAndOrderDetailResultMap (); System.out.println (lista); sqlsession.close (); } </span>3.6 Resumen
MyBatis utiliza la colección de ResultMap para mapear múltiples registros de la consulta asociada en una propiedad de colección de listas. Implementación utilizando el Trauttype: Map de los detalles del pedido en OrderDetails en pedidos, que deben procesarse usted mismo, usar transversal de doble bucle, eliminar los registros duplicados y colocar los detalles de pedidos en las colas de orden.
4. MUCHAS A MUCHO QUERY
4.1 Requisitos: consulte el usuario y la información del producto comprada por el usuario
4.2 Ideas de mapeo
Mapee la información del usuario al usuario, agregue la lista de atributos de la lista de pedidos <Sders> OrdersList en la clase de usuario para asignar la lista de orders; Agregue la lista de atributos de la lista de detalles del pedido <OrderDetail> OrderDetials en pedidos, asigne los detalles del pedido a OrderDetials; Agregue el atributo de elementos en OrderDetail para mapear los elementos correspondientes a los detalles del pedido al elemento.
4.3 OrderScustomMapper.xml agrega el siguiente código:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <!-ResultMap para consultar la información del producto comprada por el usuario-> <resultmap type = "com.mybatis.entity.user" id = "userandItemSresUsUrtMap"> <!-Información del usuario-> <Id columna = "User_id" Property = "Id"/" propiedad = "UserName"/> <resultado columna = "sexo" propiedad = "sexo"/> <resultado columna = "dirección" propiedad = "dirección"/> <!-INFORMACIÓN DEL PEDIDO Un usuario corresponde a múltiples órdenes, utilizando la asignación de colección-> <Propiedad de colección = "OrdersList" oftype = "com.mybatis.Entity.orders"> <id columna = "Id" Id "Id" Id "/> <Result COLUNTULLA" Usuary "User" User "User" User "User" User ". Propiedad = "userId"/> <resultado columna = "number" propiedad = "número"/> <resultado columna = "createTime" Property = "CreateTime"/> <resultado columna = "Nota" Propiedad = "nota"/> <resultado columna = "nota"/> <resultado columna = "nota" propiedad = "nota"/> <Detalle de pedido un pedido incluye múltiples detalles-> <recopilación de propiedades = "OrdenDetails" " oftype = "com.mybatis.entity.OrderDetail"> <id columna = "ordendetail_id" propiedad = "id"/> <resultado columna = "items_id" propiedad = "itemsID"/> <resultado columna = "items_num" Propiedad = "itemsnum"/> <<semIts = "Orders_id" = "OrderSid"/> <resultado de resultado COLUMN columna = "itemsname"/> <resultado columna = "itemsname"/> <resultado columna = "items" javatype = "com.mybatis.entity.items"> <id columna = "items_id" Property = "id"/> <resultado columna = "items_name" itemssemsemsits "/> <resultado columna =" items_name "propiedad =" itemsname "/> <result column =" itemiesil " property="detail"/> <result column="items_price" property="price"/> </association> </collection> </collection> </resultMap> <!-- To query the product information purchased by users and users, use resulaMap--> <select id="findUserAndItemsResultMap" resultMap="userAndItemsResultMap"> SELECT t1.*, t2.username, t2.sex, t2.address, t3.id orderdetail_id, t3.items_id, t3.items_num, t3.orders_id, t4.itemsname items_name, t4.detail items_detail, t4.price items_price FROM orders t1, t_user t2, orderdetail t3, items t4 WHERE t1.user_id = t2.id AND t3.orders_id=t1.id Y T3.Items_id = T4.id </elect> </span>
4.4 Agregue el siguiente método en OrderCustomMapper.java:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> / ** Consulta la información del producto comprada por usuarios y usuarios* / Lista pública <serem> FindUserAndItemSresultMap (); </span>
4.5 Agregar métodos de prueba a la prueba JUnit, el código es el siguiente:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> // consulta la información de los productos comprados por el usuario y el usuario @Test public void testFinduserAnditemsResultMap () {sqlSession sqlSession = sqlSession.opensession (); // Crear un objeto proxy OrderScustOmmperper OC = SQLSession.getMapper (OrderSCustomMapper.Class); // Llama a la lista de métodos mapper <serem> list = oC.FinduserAndItemSresUltMap (); System.out.println (lista); sqlsession.close (); } </span> 4.6 Resumen Resumen de mapas
Resulttype:
Función: asigne los resultados de la consulta en POJO de acuerdo con el nombre de la columna SQL POJO Atributo del atributo Consistencia.
Ocuidad: visualización común de registros detallados, como cuando los usuarios compran detalles del producto y muestran toda la información de consulta asociada en la página, puede usar directamente el resultado de resultados para asignar cada registro en un POJO y atravesar la lista (POJO en la lista) en la página de front-end.
ResultMap:
Uso: Asociación y colección para completar el mapeo avanzado de uno a uno y uno a muchos (hay requisitos de mapeo especiales para los resultados).
asociación:
Función: asigne la información de consulta asociada en un objeto POJO.
Ocuidad: para facilitar la consulta de información asociada, puede utilizar la asociación para asignar información de pedido asociada en los atributos de POJO de objetos de usuario, como: consulta de pedidos e información de usuario asociada.
El uso de resultType no puede mapear los resultados de la consulta al atributo POJO del objeto POJO. Elija si se utiliza TEVETTYPE o ResultMap de acuerdo con las necesidades de atravesar la consulta de conjunto de resultados.
Recopilación:
Función: asigne la información de consulta asociada en una recopilación de listas.
Ocuidad: para facilitar la consulta de la información de la asociación transversal, puede usar la recopilación para asignar la información de la asociación a la recopilación de la lista. Por ejemplo: consulta el módulo de alcance de permiso del usuario y el menú en el módulo, puede usar la colección para asignar la lista del módulo para asignar los atributos de la lista del menú del objeto del módulo. El propósito de esto es facilitar la consulta transversal del conjunto de resultados de consulta.
Si usa resultType, no puede asignar los resultados de la consulta a la colección de la lista.
Lo anterior es el mapeo avanzado en MyBatis presentada por el editor. 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!