标签:
所要做的业务如下图所示:
表设计有两种方法:
方法1:
商品分类表(category)
包括字段:id, name, parentId
注:id为自增,第一级的父类ID设计为0。
商品与分类关联表(product_category)
包括字段:id, product, category
注:商品在添加时,与最后一级分类关联,但在存储时,要把所有的一级二级分类等都关联进来。
表数据如下:
id | name | parentId |
1 | 服装 | 0 |
2 | 女装 | 1 |
3 | 男装 | 1 |
4 | 数码 | 0 |
方法2:
商品分类表(sku_scene_type)
包括字段:id, name
注:id为手动设置,两位表示一级
商品与分类关联表(product_category)
包括字段:id, product, category
注:商品在添加时,只需与最后一级分类关联。
表数据如下:
id | name |
100000 | 服装 |
100100 | 女装 |
100200 | 男装 |
200000 | 数码 |
商品分类数据添加语句:
1 <insert id="insertByParenCode"> 2 insert into sku_scene_type 3 <trim prefix="(" suffix=")" suffixOverrides=","> 4 <if test="type.id != null"> 5 id, 6 </if> 7 typeCode, 8 <if test="type.typeName != null"> 9 typeName, 10 </if> 11 <if test="type.typeDate != null"> 12 typeDate, 13 </if> 14 <if test="type.operator != null"> 15 operator, 16 </if> 17 <if test="type.modifyDate != null"> 18 modifyDate, 19 </if> 20 <if test="type.typeStatus != null"> 21 typeStatus, 22 </if> 23 </trim> 24 SELECT 25 <trim prefix=" " suffix=" " suffixOverrides=","> 26 <if test="type.id != null"> 27 #{type.id,jdbcType=INTEGER}, 28 </if> 29 <choose> 30 <when test="parentCode != null and parentCode != 0"> 31 ifnull(MAX(typeCode), #{parentCode}) + 1, 32 </when> 33 <otherwise> 34 ifnull(MAX(typeCode) + 100, 1000), 35 </otherwise> 36 </choose> 37 <if test="type.typeName != null"> 38 #{type.typeName,jdbcType=VARCHAR}, 39 </if> 40 <if test="type.typeDate != null"> 41 #{type.typeDate,jdbcType=TIMESTAMP}, 42 </if> 43 <if test="type.operator != null"> 44 #{type.operator,jdbcType=BIGINT}, 45 </if> 46 <if test="type.modifyDate != null"> 47 #{type.modifyDate,jdbcType=TIMESTAMP}, 48 </if> 49 <if test="type.typeStatus != null"> 50 #{type.typeStatus,jdbcType=CHAR}, 51 </if> 52 </trim> 53 from sku_scene_type 54 <where> 55 <choose> 56 <when test="parentCode != null and parentCode != 0"> 57 typeCode MOD 100 != 0 AND (#{parentCode} DIV 100 = typeCode DIV 100) 58 </when> 59 <otherwise> 60 typeCode MOD 100 = 0 61 </otherwise> 62 </choose> 63 </where> 64 </insert>
注:mysql中判断为空用 ifnull(),整除用DIV,求余用MOD
标签:
原文地址:http://www.cnblogs.com/luyanliang/p/5473495.html