1.數(shù)據(jù)庫執(zhí)行腳本
創(chuàng)建數(shù)據(jù)庫表代碼:

1 CREATE TABLE items ( 2 id INT NOT NULL AUTO_INCREMENT, 3 itemsname VARCHAR(32) NOT NULL COMMENT '商品名稱', 4 PRice FLOAT(10,1) NOT NULL COMMENT '商品定價', 5 detail TEXT COMMENT '商品描述', 6 pic VARCHAR(64) DEFAULT NULL COMMENT '商品圖片', 7 createtime DATETIME NOT NULL COMMENT '生產(chǎn)日期', 8 PRIMARY KEY (id) 9 ) DEFAULT CHARSET=utf8;10 11 /*Table structure for table `orderdetail` */12 13 CREATE TABLE orderdetail (14 id INT NOT NULL AUTO_INCREMENT,15 orders_id INT NOT NULL COMMENT '訂單id',16 items_id INT NOT NULL COMMENT '商品id',17 items_num INT DEFAULT NULL COMMENT '商品購買數(shù)量',18 PRIMARY KEY (id),19 KEY `FK_orderdetail_1` (`orders_id`),20 KEY `FK_orderdetail_2` (`items_id`),21 CONSTRAINT `FK_orderdetail_1` FOREIGN KEY (`orders_id`) REFERENCES `orders` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,22 CONSTRAINT `FK_orderdetail_2` FOREIGN KEY (`items_id`) REFERENCES `items` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION23 ) DEFAULT CHARSET=utf8;24 25 /*Table structure for table `orders` */26 27 CREATE TABLE orders (28 id INT NOT NULL AUTO_INCREMENT,29 user_id INT NOT NULL COMMENT '下單用戶id',30 number VARCHAR(30) NOT NULL COMMENT '訂單號',31 createtime DATETIME NOT NULL COMMENT '創(chuàng)建訂單時間',32 note VARCHAR(100) DEFAULT NULL COMMENT '備注',33 PRIMARY KEY (`id`),34 KEY `FK_orders_1` (`user_id`),35 CONSTRAINT `FK_orders_id` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION36 ) DEFAULT CHARSET=utf8;37 38 /*Table structure for table `t_user` */39 40 CREATE TABLE t_user (41 id INT NOT NULL AUTO_INCREMENT,42 username VARCHAR(32) NOT NULL COMMENT '用戶名稱',43 birthday DATE DEFAULT NULL COMMENT '生日',44 sex CHAR(1) DEFAULT NULL COMMENT '性別',45 address VARCHAR(256) DEFAULT NULL COMMENT '地址',46 PRIMARY KEY (`id`)47 ) DEFAULT CHARSET=utf8;View Code
測試數(shù)據(jù)代碼:

 1 /*Data for the table `items` */ 2  3 INSERT  INTO items(itemsname,price,detail,pic,createtime) VALUES  4 ('臺式機',3000.0,'該電腦質(zhì)量非常好!',NULL,'2015-07-07 13:28:53'), 5 ('筆記本',6000.0,'筆記本性能好,質(zhì)量好!',NULL,'2015-07-08 13:22:57'), 6 ('背包',200.0,'名牌背包,容量大質(zhì)量好!',NULL,'2015-07-010 13:25:02'); 7  8 /*Data for the table `orderdetail` */ 9 10 INSERT  INTO `orderdetail`(`orders_id`,`items_id`,`items_num`) VALUES11  (1,1,1),12  (1,2,3),13  (2,3,4),14  (3,2,3);15 16 /*Data for the table `orders` */17 18 INSERT  INTO `orders`(`user_id`,`number`,`createtime`,`note`) VALUES 19 (1,'1000010','2015-06-04 13:22:35',NULL),20 (1,'1000011','2015-07-08 13:22:41',NULL),21 (2,'1000012','2015-07-17 14:13:23',NULL),22 (3,'1000012','2015-07-16 18:13:23',NULL),23 (4,'1000012','2015-07-15 19:13:23',NULL),24 (5,'1000012','2015-07-14 17:13:23',NULL),25 (6,'1000012','2015-07-13 16:13:23',NULL);26 27 /*Data for the table `user` */28 29 INSERT  INTO `t_user`(`username`,`birthday`,`sex`,`address`) VALUES 30 ('王五',NULL,'2',NULL),31 ('張三','2014-07-10','1','北京市'),32 ('張小明',NULL,'1','河南鄭州'),33 ('陳小明',NULL,'1','河南鄭州'),34 ('張三豐',NULL,'1','河南鄭州'),35 ('陳小明',NULL,'1','河南鄭州'),36 ('王五',NULL,NULL,NULL),37  ('小A','2015-06-27','2','北京'),38 ('小B','2015-06-27','2','北京'),39 ('小C','2015-06-27','1','北京'),40 ('小D','2015-06-27','2','北京');View Code2.數(shù)據(jù)模型分析思路
(1).每張表記錄的數(shù)據(jù)內(nèi)容:分模塊對每張表記錄的內(nèi)容進行熟悉,相當于你學(xué)習(xí)系統(tǒng)需求(功能)的過程;
(2).每張表重要的字段設(shè)置:非空字段、外鍵字段;
(3).數(shù)據(jù)庫級別表與表之間的關(guān)系:外鍵關(guān)系;
(4).表與表之間的業(yè)務(wù)關(guān)系:在分析表與表之間的業(yè)務(wù)關(guān)系時一定要建立在某個業(yè)務(wù)意義基礎(chǔ)上去分析。
3.針對訂單商品模型的數(shù)據(jù)庫思路分析:
用戶表:t_user-->記錄了購買商品的用戶信息
訂單表:orders-->記錄了用戶所創(chuàng)建的訂單(購買商品的訂單)
訂單明細表:orderdetail-->記錄了訂單的詳細信息即購買商品的信息
商品表:items-->記錄了商品信息
表與表之間的業(yè)務(wù)關(guān)系:
在分析表與表之間的業(yè)務(wù)關(guān)系時需要建立在某個業(yè)務(wù)意義基礎(chǔ)上去分析。
先分析數(shù)據(jù)級別之間有關(guān)系的表之間的業(yè)務(wù)關(guān)系:
t_user和orders:
t_user---->orders:一個用戶可以創(chuàng)建多個訂單,一對多
orders--->t_user:一個訂單只由一個用戶創(chuàng)建,一對一
orders和orderdetail:
orders--->orderdetail:一個訂單可以包括多個訂單明細,因為一個訂單可以購買多個商品,每個商品的購買信息在orderdetail記錄,一對多關(guān)系
orderdetail-->orders:一個訂單明細只能包括在一個訂單中,一對一
orderdetail和itesm:
orderdetail--->itesms:一個訂單明細只對應(yīng)一個商品信息,一對一
items-->orderdetail:一個商品可以包括在多個訂單明細,一對多
再分析數(shù)據(jù)庫級別沒有關(guān)系的表之間是否有業(yè)務(wù)關(guān)系:
orders和items:
orders和items之間可以通過orderdetail表建立關(guān)系。
4.分析之后畫出對應(yīng)的圖,方便直觀的了解業(yè)務(wù)關(guān)系

2.1.需求:查詢訂單信息,關(guān)聯(lián)查詢用戶信息;
2.2.resultType實現(xiàn)
2.2.1.sql語句
確定查詢的主表:訂單表,確定查詢的關(guān)聯(lián)表:用戶表。
1 SELECT t1.*,2 t2.username,3 t2.sex,4 t2.address5 FROM 6 orders t1,7 t_user t28 WHERE t1.user_id=t2.id
2.2.2.創(chuàng)建entity實體
用戶實體:User.java
package com.mybatis.entity;import java.util.Date;import java.util.List;/** * @ClassName: User * @Description: TODO(用戶實體) * @author 阿赫瓦里 */public class User { private Integer id; // 姓名 private String username; // 性別 private String sex; // 地址 private String address; // 生日 private Date birthday; // 用戶創(chuàng)建的訂單列表 private List<Orders> ordersList; // getter and setter ......}
訂單實體:orders.java
package com.mybatis.entity;import java.util.Date;import java.util.List;/** * @ClassName: Orders * @Description: TODO(訂單實體) * @author 阿赫瓦里 */public class Orders {    /** 主鍵訂單Id */    private Integer id;    /** 下單用戶id */    private Integer userid;    /** 訂單號 */    private String number;    /** 創(chuàng)建訂單時間 */    private Date createTime;    /** 備注 */    private String note;    // 用戶信息    private User user;    // 訂單明細    private List<OrderDetail> orderdetails;       //  getter and setter ......}商品實體:Items.java
package com.mybatis.entity;import java.util.Date;/** * @ClassName: Items * @Description: TODO(商品實體類) * @author 阿赫瓦里 */public class Items {    /** 商品表主鍵Id */    private Integer id;    /** 商品名稱 */    private String itemsName;    /** 商品定價 */    private float price;    /** 商品描述 */    private String detail;    /** 商品圖片 */    private String picture;    /** 生產(chǎn)日期 */    private Date createTime;// getter and setter ......}訂單明細實體:OrderDetail.java
package com.mybatis.entity;/** * @ClassName: OrderDetail * @Description: TODO(訂單明細實體) * @author 阿赫瓦里 */public class OrderDetail {    /** 主鍵,訂單明細表Id */    private Integer id;    /** 訂單Id */    private Integer ordersId;    /** 商品id */    private Integer itemsId;    /** 商品購買數(shù)量 */    private Integer itemsNum;    // 明細對應(yīng)的商品信息    private Items items;        //  getter and setter ......}創(chuàng)建一個包裝類,將查詢到的信息可以全部映射到此類:OrdersCustom.java
/** * @ClassName: OrdersCustom * @Description: TODO(訂單的擴展類,通過此類映射訂單和用戶的查詢結(jié)果,讓此類繼承字段較多的實體類) * @author: 阿赫瓦里 */public class OrdersCustom extends Orders {    // 添加用戶的屬性    private String username;    private String sex;    private String address;        // getter and setter......}2.2.3.創(chuàng)建OrdersCustomMapper.java
package com.mybatis.Mapper;import java.util.List;import com.mybatis.entity.OrdersCustom;/** * @ClassName: OrdersMapperCustom * @Description: TODO(OrdersMapperCustom的mapper) * @author 阿赫瓦里 */public interface OrdersCustomMapper {    /** 查詢訂單,關(guān)聯(lián)查詢用戶信息 */    public List<OrdersCustom> findOrdersUser();}2.2.4.創(chuàng)建OrdersCustomMapper.xml和上面對應(yīng)的接口名稱一致,以便通過mapper接口加載配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace命名空間,作用就是對sql進行分類化的管理,理解為sql隔離 注意:使用mapper代理開發(fā)時,namespace有特殊作用,namespace等于mapper接口地址 --><mapper namespace="com.mybatis.mapper.OrdersCustomMapper"> <!-- 查詢訂單,關(guān)聯(lián)查詢用戶信息 --> <select id="findOrdersUser" resultType="com.mybatis.entity.OrdersCustom"> SELECT t1.*, t2.username, t2.sex, t2.address FROM orders t1, t_user t2 WHERE t1.user_id=t2.id </select></mapper>
2.3.resultMap實現(xiàn)
2.3.1. sql語句同上
2.3.2.resultMap映射思路:
使用resultMap將查詢結(jié)果中的訂單信息映射到Orders對象中,在orders類中添加User屬性,將關(guān)聯(lián)查詢出來的用戶信息映射到orders對象中的user屬性中(上面orders實體中已經(jīng)添加)。
2.3.3 ordersCustomMapper.xml
1. 定義resultMap
1 <!-- 定義查詢訂單關(guān)聯(lián)用戶的 resultMap,將整個的查詢結(jié)果映射到com.mybatis.entity.Orders中 --> 2 <resultMap type="com.mybatis.entity.Orders" id="OrdersUserResultMap"> 3 <!-- 配置映射的訂單信息 --> 4 5 <!-- id:查詢列中的唯一標識,訂單信息中的唯一標識,如果多列組成唯一標識(如:一般數(shù)據(jù)庫設(shè)計中的字典表 使用聯(lián)合主鍵),就需要配置多個id 6 column:訂單信息的唯一標識 列 7 property:訂單信息的唯一標識列所映射到orders中的那個屬性(假如:數(shù)據(jù)庫中orders表中的主鍵為orders_id,而實體屬性名稱為ordersId, 8 則這個配置應(yīng)為<id column="orders_id" property="ordersId"/>,類似hibernate實體映射文件配置)。 9 -->10 <id column="id" property="id"/>11 <result column="user_id" property="userid"/>12 <result column="number" property="number"/>13 <result column="createtime" property="createTime"/>14 <result column="note" property="note"/>15 16 <!-- 配置映射的關(guān)聯(lián)用戶信息 -->17 18 <!--association:用于映射關(guān)聯(lián)查詢單個對象的信息19 property:要將關(guān)聯(lián)查詢的用戶信息映射到Orders中那個屬性20 -->21 <association property="user" javaType="com.mybatis.entity.User">22 <!-- id:關(guān)聯(lián)查詢用戶的唯一標識 23 column:指定唯一標識用戶信息的列24 property:映射到user的那個屬性25 -->26 <id column="user_id" property="id"/>27 <result column="username" property="username"/>28 <result column="sex" property="sex"/>29 <result column="address" property="address"/>30 </association>31 32 </resultMap>
2. statement定義
1 <!-- 查詢訂單,關(guān)聯(lián)查詢用戶信息,使用resultMap實現(xiàn) --> 2 <select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap"> 3 SELECT t1.*, 4 t2.username, 5 t2.sex, 6 t2.address 7 FROM 8 orders t1, 9 t_user t210 WHERE t1.user_id=t2.id11 </select>
3.OrderCustomMapper.java接口中添加下面的方法
/** 查詢訂單關(guān)聯(lián)查詢用戶信息,使用reslutMap實現(xiàn)*/public List<Orders>findOrdersUserResultMap();
4.對是resultType和resultMap實現(xiàn)的Junit測試

1 package com.mybatis.test; 2 3 import java.io.InputStream; 4 import java.util.List; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;10 import org.junit.Before;11 import org.junit.Test;12 13 import com.mybatis.entity.Orders;14 import com.mybatis.entity.OrdersCustom;15 import com.mybatis.mapper.OrdersCustomMapper;16 17 public class OrdersCustomMapperTest {18 19 private SqlSessionFactory sqlSessionFactory;20 21 // 此方法是在執(zhí)行findUserByIdTest之前執(zhí)行22 @Before23 public void setUp() throws Exception {24 String resource = "SqlMapConfig.xml";25 InputStream inputStream = Resources.getResourceAsStream(resource);26 // 創(chuàng)建SqlSessionFcatory27 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);28 }29 30 // 查詢訂單,關(guān)聯(lián)查詢用戶信息,使用resultType實現(xiàn)的測試31 @Test32 public void TestFindOrdersUser() {33 SqlSession sqlSession = sqlSessionFactory.openSession();34 // 創(chuàng)建代理對象35 OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);36 // 調(diào)用mapper的方法37 List<OrdersCustom> list = oc.findOrdersUser();38 System.out.println(list);39 sqlSession.close();40 }41 42 // 查詢訂單,關(guān)聯(lián)查詢用戶信息,使用resultMap實現(xiàn)的測試43 @Test44 public void TestFindOrdersUserResultMap() {45 SqlSession sqlSession = sqlSessionFactory.openSession();46 // 創(chuàng)建代理對象47 OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);48 // 調(diào)用mapper的方法49 List<Orders> list = oc.findOrdersUserResultMap();50 System.out.println(list);51 sqlSession.close();52 53 }54 55 }View Code
5.resultType和resultMap實現(xiàn)一對一查詢小結(jié)
實現(xiàn)一對一查詢:
a.resultType:使用resultType實現(xiàn)較為簡單,如果pojo中沒有包括查詢出來的列名,需要增加列名對應(yīng)的屬性,即可完成映射。
b.如果沒有查詢結(jié)果的特殊要求建議使用resultType。
c.resultMap:需要單獨定義resultMap,實現(xiàn)有點麻煩,如果對查詢結(jié)果有特殊的要求,使用resultMap可以完成將關(guān)聯(lián)查詢映射pojo的屬性中。
d.resultMap可以實現(xiàn)延遲加載,resultType無法實現(xiàn)延遲加載。
三、一對多查詢3.1. 需求:查詢訂單(關(guān)聯(lián)用戶)及訂單明細;
3.2.在orders.java類中添加List<orderDetail>orderDetails屬性(上面實體已添加)。
最終會將訂單信息映射到orders中,訂單所對應(yīng)的訂單明細映射到orders中的orderDetails屬性中.
3.3.在ordersCustomMapper.xml中添加如下代碼
<!-- 查詢訂單關(guān)聯(lián)查詢用戶及訂單明細 --> <select id="findOrdersAndOrderDetailResultMap" resultMap="ordersAndOrderDetailResultMap"> SELECT t1.*, t2.username, t2.sex, t2.address, t3.id orderdetail_id, t3.items_id, t3.items_num, t3.orders_id FROM orders t1, t_user t2, orderdetail t3 WHERE t1.user_id = t2.id AND t3.orders_id=t1.id </select>
resultMap的定義同樣添加到ordersCustomMapper.xml
<!-- 查詢訂單(關(guān)聯(lián)用戶)及訂單明細的resultMap --> <resultMap type="com.mybatis.entity.Orders" id="ordersAndOrderDetailResultMap" extends="OrdersUserResultMap"> <!-- 訂單信息 --> <!-- 關(guān)聯(lián)用戶信息 --> <!-- 使用extends繼承,不用在中配置訂單信息和用戶信息的映射--> <!-- 關(guān)聯(lián)訂單明細信息 一個訂單關(guān)聯(lián)查詢出了多條訂單明細,要使用collection映射 collection:對關(guān)聯(lián)查詢到的多條記錄映射到集合中 property:將關(guān)聯(lián)查詢到的多條記錄映射到orders類的那個屬性 ofType:指定映射的集合屬性中pojo的類型 --> <collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"> <!-- id:唯一標識 property:要將訂單明細的唯一標識映射到com.mybatis.entity.OrderDetail的那個屬性 --> <id column="orderdetail_id" property="id"/> <result column="items_id" property="itemsId"/> <result column="items_num" property="itemsNum"/> <result column="orders_id" property="ordersId"/> </collection> </resultMap>
3.4. 在OrderCustomMapper.java接口類中添加一個方法
/**查詢訂單(關(guān)聯(lián)用戶)以及訂單明細*/ public List<OrderDetail>findOrdersAndOrderDetailResultMap();
3.5.在Junit測試類中添加測試方法
// 查詢訂單(關(guān)聯(lián)用戶)以及訂單明細的測試    @Test    public void TestFindOrdersAndOrderDetailResultMap() {        SqlSession sqlSession = sqlSessionFactory.openSession();        // 創(chuàng)建代理對象        OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);        // 調(diào)用mapper的方法        List<OrderDetail> list = oc.findOrdersAndOrderDetailResultMap();        System.out.println(list);        sqlSession.close();      }3.6. 小結(jié)
mybatis使用resultMap的collection對關(guān)聯(lián)查詢的多條記錄映射到一個list集合屬性中。
使用resultType實現(xiàn):將訂單明細映射到orders中的orderdetails中,需要自己處理,使用雙重循環(huán)遍歷,去掉重復(fù)記錄,將訂單明細放在orderdetails中。
四、多對多查詢4.1.需求:查詢用戶以及用戶購買的商品信息
4.2.映射思路
將用戶信息映射到user中。
在user類中添加訂單列表屬性List<Orders>orderslist,將用戶創(chuàng)建的訂單映射到orderslist;
在Orders中添加訂單明細列表屬性List<OrderDetail>orderdetials,將訂單的明細映射到orderdetials;
在OrderDetail中添加Items屬性,將訂單明細所對應(yīng)的商品映射到Item;
4.3.OrdersCustomMapper.xml添加如下代碼
<!-- 查詢用戶即購買的商品信息的ResultMap --> <resultMap type="com.mybatis.entity.User" id="userAndItemsResultMap"> <!-- 用戶信息 --> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="sex" property="sex"/> <result column="address" property="address"/> <!-- 訂單信息 一個用戶對應(yīng)多個訂單,使用collection映射 --> <collection property="ordersList" ofType="com.mybatis.entity.Orders"> <id column="id" property="id"/> <result column="user_id" property="userid"/> <result column="number" property="number"/> <result column="createtime" property="createTime"/> <result column="note" property="note"/> <!-- 訂單明細 一個訂單包括 多個明細 --> <collection property="orderdetails" ofType="com.mybatis.entity.OrderDetail"> <id column="orderdetail_id" property="id"/> <result column="items_id" property="itemsId"/> <result column="items_num" property="itemsNum"/> <result column="orders_id" property="ordersId"/> <!-- 商品信息 一個訂單明細對應(yīng)一個商品 --> <association property="items" javaType="com.mybatis.entity.Items"> <id column="items_id" property="id"/> <result column="items_name" property="itemsName"/> <result column="items_detail" property="detail"/> <result column="items_price" property="price"/> </association> </collection> </collection> </resultMap> <!-- 查詢用戶及用戶購買的商品信息,使用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 AND t3.items_id = t4.id </select>
4.4.在OrderCustomMapper.java添加如下方法
/** 查詢用戶及用戶所購買的商品信息 */ public List<User> findUserAndItemsResultMap();
4.5.在Junit測試類中添加測試方法
    // 查詢用戶及用戶購買的商品的信息    @Test    public void TestFindUserAndItemsResultMap() {        SqlSession sqlSession = sqlSessionFactory.openSession();        // 創(chuàng)建代理對象        OrdersCustomMapper oc = sqlSession.getMapper(OrdersCustomMapper.class);        // 調(diào)用mapper的方法        List<User> list = oc.findUserAndItemsResultMap();        System.out.println(list);        sqlSession.close();    }4.6.resultMap總結(jié)
resultType:
作用:將查詢結(jié)果按照sql列名pojo屬性名一致性映射到pojo中。
場合:
常見一些明細記錄的展示,比如用戶購買商品明細,將關(guān)聯(lián)查詢信息全部展示在頁面時,此時可直接使用resultType將每一條記錄映射到pojo中,在前端頁面遍歷list(list中是pojo)即可。
resultMap:
使用association和collection完成一對一和一對多高級映射(對結(jié)果有特殊的映射要求)。
association:
作用:將關(guān)聯(lián)查詢信息映射到一個pojo對象中。
場合:
為了方便查詢關(guān)聯(lián)信息可以使用association將關(guān)聯(lián)訂單信息映射為用戶對象的pojo屬性中,比如:查詢訂單及關(guān)聯(lián)用戶信息。
使用resultType無法將查詢結(jié)果映射到pojo對象的pojo屬性中,根據(jù)對結(jié)果集查詢遍歷的需要選擇使用resultType還是resultMap。
collection:
作用:將關(guān)聯(lián)查詢信息映射到一個list集合中。
場合:
為了方便查詢遍歷關(guān)聯(lián)信息可以使用collection將關(guān)聯(lián)信息映射到list集合中,比如:查詢用戶權(quán)限范圍模塊及模塊下的菜單,可使用collection將模塊映射到模塊list中,將菜單列表映射到模塊對象的菜單list屬性中,這樣的作的目的也是方便對查詢結(jié)果集進行遍歷查詢。
如果使用resultType無法將查詢結(jié)果映射到list集合中。
新聞熱點
疑難解答