其实在小能就已经用过了,只不过很久没用过这种查询都快忘记了,从网上找了大部分都是让人无语的方法。html
@Data @EqualsAndHashCode(callSuper = false) @NoArgsConstructor @AllArgsConstructor public class ShopGoodsEntity { private String goodsNumber; //商品编号 private String goodsName; //商品名称 private String goodsTitle; //商品标题 private String productOne; //商品规格 private String goodsImageTopList; //轮播图 private String goodsImageBottom; //介绍图 private int goodsStatus; //0上架 1下架 private Date createTime; //商品建立时间 private int sellerId; //卖家id private String sellerPhone; //商家提供的客服电话 private Date activityStartTime; //活动开始时间 private Date activityEndTime; //活动结束时间 private int isActivity; //是否活动 private String activityName; //活动名称 private List<ShopProductEntity> products; }
@Data @EqualsAndHashCode(callSuper = false) @NoArgsConstructor @AllArgsConstructor public class ShopProductEntity { private int id; private String productOne; private String name; //规格名称 private int parameterId; //参数id private double originalPrice; //原价 private double activityPrice; //活动价 private int weight; //重量 private int repertoryNum;//库存 private int sellNum; //已售数量 private int fakeNum; //作假数量 private ShopParameterEntity parameter; }
@Data @EqualsAndHashCode(callSuper = false) @NoArgsConstructor @AllArgsConstructor public class ShopParameterEntity { private int id; private int parameterType; //产品类型 private int productWeight;//单瓶产品重量 private int blisterWeight;//吸塑重量 private String size; //标签尺寸 private String productName; //规格名称 private int productId; //t_shop_product主键id }
从这三个实体类中能够看到,分别对应的是1对多,一对一,用一个sql查询出全部的数据,以下:java
collection 一对多 里边property 属性值对应实体类的参数值,不能随便写sql
association 实体一对一 里边property 属性值对应实体类的参数值,不能随便写spa
<resultMap id="allData" type="com.dtb.shop.model.ShopGoodsEntity"> <id column="goods_number" jdbcType="VARCHAR" property="goodsNumber" /> <result column="goods_name" jdbcType="VARCHAR" property="goodsName" /> <result column="goods_title" jdbcType="VARCHAR" property="goodsTitle" /> <result column="product_one" jdbcType="VARCHAR" property="productOne" /> <result column="goods_image_top_list" jdbcType="VARCHAR" property="goodsImageTopList" /> <result column="goods_image_bottom" jdbcType="VARCHAR" property="goodsImageBottom" /> <result column="goods_status" jdbcType="INTEGER" property="goodsStatus" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="seller_id" jdbcType="INTEGER" property="sellerId" /> <result column="seller_phone" jdbcType="VARCHAR" property="sellerPhone" /> <result column="activity_start_time" jdbcType="TIMESTAMP" property="activityStartTime" /> <result column="activity_end_time" jdbcType="TIMESTAMP" property="activityEndTime" /> <result column="is_activity" jdbcType="INTEGER" property="isActivity" /> <result column="activity_name" jdbcType="VARCHAR" property="activityName" /> <collection property="products" javaType="java.util.ArrayList" ofType="com.dtb.shop.model.ShopProductEntity"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="product_one" jdbcType="VARCHAR" property="productOne" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="parameter_id" jdbcType="INTEGER" property="parameterId" /> <result column="original_price" jdbcType="DOUBLE" property="originalPrice" /> <result column="activity_price" jdbcType="DOUBLE" property="activityPrice" /> <result column="weight" jdbcType="INTEGER" property="weight" /> <result column="repertory_num" jdbcType="INTEGER" property="repertoryNum" /> <result column="sell_num" jdbcType="INTEGER" property="sellNum" /> <result column="fake_num" jdbcType="INTEGER" property="fakeNum" /> <association property="parameter" javaType="com.dtb.shop.model.ShopParameterEntity"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="t_parameter_type" jdbcType="INTEGER" property="parameterType" /> <result column="t_product_weight" jdbcType="INTEGER" property="productWeight" /> <result column="t_blister_weight" jdbcType="INTEGER" property="blisterWeight" /> <result column="t_size" jdbcType="VARCHAR" property="size" /> <result column="t_product_name" jdbcType="VARCHAR" property="productName" /> <result column="t_product_id" jdbcType="INTEGER" property="productId" /> </association> </collection> </resultMap>
<select id="getDetailInfo" parameterType="java.lang.String" resultMap="allData"> select g.goods_number,g.goods_name,g.goods_title,g.product_one,g.goods_image_top_list,g.goods_image_bottom,g.goods_status, g.create_time,g.seller_id,g.seller_phone,g.activity_start_time,g.activity_end_time,g.is_activity,g.activity_name,p.id, p.product_one,p.name,p.parameter_id,p.original_price,p.activity_price,p.weight,p.repertory_num,p.sell_num,p.fake_num, m.id,m.t_parameter_type,m.t_product_weight,m.t_blister_weight,m.t_size,m.t_product_name,m.t_product_id from t_shop_goods g left join t_shop_product p on p.product_one = g.product_one left join t_shop_parameter m on p.parameter_id = m.id where g.goods_number = #{goodsNumber} </select>
结果就出来了,为何还有那么多让人无语的博客呢?以下:.net
https://blog.csdn.net/qq_38157516/article/details/79712721htm
https://www.cnblogs.com/yansum/p/5819973.htmlblog
不知道这些sql还不是多个sql拼成的嘛ci