您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 【黑马程序员】Mybatis:resultMap的使用总结-
黑马程序员成都中心编著【黑马程序员】Mybatis:resultMap的使用总结resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。resultMap包含的元素:[XML]纯文本查看复制代码?1!--column不做限制,可以为任意表的字段,而property须为type定义的pojo属性--resultMapid=唯一的标识type=映射的pojo对象idcolumn=表的主键字段,或者可以为查询语句中的别名字段jdbcType=字段类型property=映射pojo对象的主键属性/resultcolumn=表的一个字段(可以为任意表的一个字段)jdbcType=字段类型property=映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)/associationproperty=pojo的一个对象属性javaType=pojo关联的pojo对象idcolumn=关联pojo对象对应表的主键字段jdbcType=字段类型property=关联pojo对象的主席属性/resultcolumn=任意表的字段jdbcType=字段类型property=关联pojo对象的属性//association!--集合中的property须为oftype定义的pojo对象的属性--collectionproperty=pojo的集合属性ofType=集合中的pojo对象idcolumn=集合中pojo对象对应的表的主键字段jdbcType=字段类型property=集合中pojo对象的主键属性/resultcolumn=可以为任意表的字段jdbcType=字段类型property=集合中的pojo对象的属性//collection/resultMap如果collection标签是使用嵌套查询,格式如下:[XML]纯文本查看复制代码?1collectioncolumn=传递给嵌套查询语句的字段参数property=pojo对象中集合属性ofType=集合属性中的pojo对象select=嵌套的查询语句/collection注意:collection标签中的column:要传递给select查询语句的参数,如果传递多个参数,格式为column=”{参数名1=表字段1,参数名2=表字段2};以下以实例介绍resultMap的用法:一、简单需求:一个商品的结果映射;1、创建商品pojo对象:[Java]纯文本查看复制代码?1publicclassTShopSku{/***主键ID*/privateLong黑马程序员成都中心编著id;/***商品名*/privateStringskuName;/***分类ID*/privateLongcategoryId;/***主键ID*@returnID*/publicLonggetId(){returnid;}/***主键ID,*@paramid*/publicvoidsetId(Longid){this.id=id;}/***商品名*@returnSKU_NAME商品名*/publicStringgetSkuName(){returnskuName;}/***商品名*@paramskuName商品名*/publicvoidsetSkuName(StringskuName){this.skuName=skuName==null?null:skuName.trim();}/***分类ID*@returnCATEGORY_ID分类ID*/publicLonggetCategoryId(){returncategoryId;}/***分类ID*@paramcategoryId分类ID*/publicvoidsetCategoryId(LongcategoryId){this.categoryId=categoryId;}对应的resultMap:[Java]纯文本查看复制代码?1resultMapid=BaseResultMaptype=com.meikai.shop.entity.TShopSkuidcolumn=IDjdbcType=BIGINTproperty=id/resultcolumn=SKU_NAMEjdbcType=VARCHARproperty=skuName/resultcolumn=CATEGORY_IDjdbcType=BIGINTproperty=categoryId//resultMap二、商品pojo类添加属性集合:一个商品会有一些属性,现在需要将查询出的商品属性添加到商品对象中,首先需要在原商品pojo类的基础上中添加属性的集合:[Java]纯文本查看复制代码?1/***属性集合*/privateListTShopAttributeattributes;/***获得属性集合*/publicListTShopAttributegetAttributes(){returnattributes;}/***设置属性集合*@paramattributes*/publicvoidsetAttributes(ListTShopAttributeattributes){this.attributes=attributes;}将Collection标签添加到resultMap中,这里有两种方式:1、嵌套结果:对应的resultMap:[Java]纯文本查看复制代码黑马程序员成都中心编著?1resultMapid=BasePlusResultMaptype=com.meikai.shop.entity.TShopSkuidcolumn=IDjdbcType=BIGINTproperty=id/resultcolumn=SKU_NAMEjdbcType=VARCHARproperty=skuName/resultcolumn=CATEGORY_IDjdbcType=BIGINTproperty=categoryId/collectionproperty=attributesofType=com.meikai.shop.entity.TShopAttributeidcolumn=AttributeIDjdbcType=BIGINTproperty=id/resultcolumn=attribute_NAMEjdbcType=VARCHARproperty=attributeName//collection/resultMap查询语句:[XML]纯文本查看复制代码?1selectid=getByIdresultMap=basePlusResultMapselects.ID,s.SKU_NAME,s.CATEGORY_ID,a.ID,a.ATTRIBUTE_NAMEfromt_shop_skus,t_shop_attributeawheres.ID=a.SKU_IDands.ID=#{id,jdbcType=BIGINT};/select2、关联的嵌套查询(在collection中添加select属性):商品结果集映射resultMap:[XML]纯文本查看复制代码?1resultMapid=BasePlusResultMaptype=com.meikai.shop.entity.TShopSkuidcolumn=IDjdbcType=BIGINTproperty=id/resultcolumn=SKU_NAMEjdbcType=VARCHARproperty=skuName/resultcolumn=CATEGORY_IDjdbcType=BIGINTproperty=categoryId/collectioncolumn={skuId=ID}property=attributesofType=com.meikai.shop.entity.TShopAttributeselect=getAttribute/collection/resultMapcollection的select会执行下面的查询属性语句:[XML]纯文本查看复制代码?1selectid=getAttributeresultMap=AttributeResultMapselecta.ID,s.ATTRIBUTE_NAMEfromt_shop_attributeawherea.ID=#{skuId,jdbcType=BIGINT};/select属性结果集映射:黑马程序员成都中心编著[XML]纯文本查看复制代码?1resultMapid=AttributeResultMaptype=com.meikai.shop.entity.TShopAttributeidcolumn=IDjdbcType=BIGINTproperty=id/resultcolumn=ATTRIBUTE_NAMEjdbcType=VARCHARproperty=attributeName//resultMapBasePlusResultMap包含了属性查询语句的Collection所以通过下面的查询商品语句就可获得商品以及其包含的属性集合:[XML]纯文本查看复制代码?1selectid=getByIdresultMap=BasePlusResultMapselects.ID,s.SKU_NAME,s.CATEGORY_IDfromt_shop_skuswheres.ID=#{id,jdbcType=BIGINT};/select
本文标题:【黑马程序员】Mybatis:resultMap的使用总结-
链接地址:https://www.777doc.com/doc-7634720 .html