mybatis常用配置——resultMap

来源:互联网 发布:淘宝刷到单被骗咋追回 编辑:程序博客网 时间:2024/06/05 14:07
mybatis中的查询sql查询出来的列如果和pojo对象中的字段一一对应且都是简单类型时,就可以用resultType来配置返回的结果。
但是经常是pojo对象中包含另外一个pojo对象或者pojo对象里包含一个list对象,这种情况下就要用到resultMap这个功能。

1.POJO对象

pojo对象:
public class ProductDTO {       private Integer id ;       private String productName ;       //get、set方法...}

mapper.xml:

<resultMap type="com.xy.domain.ProductDTO" id="productResult">       <id column="ID"   property= "id" />       <result column="PRODUCT_NAME" property= "productName"/></resultMap><!-- 使用resultType或者resultMap都可以 --><!-- <select id="getProductById" parameterType=" int" resultType="com.xy.domain.productDTO">--><select id= "getProductById" parameterType ="int" resultMap="productResult" >      select id,product_name              from product              <where>                  id = #{id}              </where></select>

2.pojo包含pojo对象:

pojo对象:

public class ProductDTO {       private Integer id ;       private String productName ;       private ProductDetailDTO productDetail ;       //get、set方法}

public class ProductDetailDTO {       private int id ;       private int productId ;       private String productPic ;       private String productPrice ;       //get、set方法}
mapper.xml:

<resultMap type="com.xy.domain.ProductDTO" id="productResult">       <id column="id"   property= "id" />       <result column="product_name" property= "productName"/>       <!-- 1对1关系映射 -->       <association property="productDetail" column="id"                    javaType="com.xy.domain.ProductDetail">             <id column="product_detail_id" property= "id"/>             <result column="product_id" property= "productId"/>             <result column="product_price" property= "productPrice"/>             <result column="product_pic" property= "productPic"/>       </association></resultMap><select id= "getProductById" parameterType ="int" resultMap="productResult" >      select  p.id,                  p.product_name,                   pd.id product_detail_id,                   pd.productId product_id,                   pd.product_price,                   pd.product_pic              from product p,product_detail pd              <where>                  p.id = #{id}                  and p.id = pd.product_id              </where></select>

3.pojo包含List对象:

pojo对象:

public class ProductDTO {       private Integer id;       private String productName;       private List<ProductDetailDTO> productDetailList;       //get、set方法      }

public class ProductDetailDTO {       private int id;       private int productId;       private String productPic;       private String productPrice;       //get、set方法}
mapper.xml:

<resultMap type="com.xy.domain.ProductDTO" id="productResult">       <id property="id" column="id"/>       <result property="productName" column="product_name"/>       <!-- 1对多关系映射 -->       <collection property="productDetailList" column="id" javaType="com.xy.domain.ProductDetailDTO" >             <id property="id" column="product_detail_id"/>             <result property="productId" column="product_id"/>             <result property="productPic" column="product_pic"/>             <result property="productPrice" column="product_price"/>       </collection></resultMap><select id= "getProductById" parameterType ="int" resultMap="productResult" >      select  p.id,                  p.product_name,                   pd.id product_detail_id,                   pd.productId product_id,                   pd.product_price,                   pd.product_pic              from product p,product_detail pd              <where>                  p.id = #{id}                  and p.id = pd.product_id              </where></select>
总结:一个resultMap里面可以包含多个一对一和一对多的关系的组合。Collection或者association都可以将javaType换成另外一个引入的resultMap。




0 0