日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

实战SSM_O2O商铺_28【商品】商品添加之Dao层的实现

發(fā)布時(shí)間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战SSM_O2O商铺_28【商品】商品添加之Dao层的实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 概述
  • 重溫實(shí)體類(lèi)
    • Prouct
    • ProductImg
  • ProductDao接口
  • Mapper配置文件
  • ProductImgDao接口
  • Mapper配置文件
  • 單元測(cè)試
  • #ProductDaoTest
    • ProductImgDaoTest
  • Github地址

概述

完成了商品類(lèi)別的功能后,

實(shí)戰(zhàn)SSM_O2O商鋪_25【商品類(lèi)別】商品類(lèi)別列表展示從Dao到View層的開(kāi)發(fā)

實(shí)戰(zhàn)SSM_O2O商鋪_26【商品類(lèi)別】批量新增商品類(lèi)別從Dao到View層的開(kāi)發(fā)

實(shí)戰(zhàn)SSM_O2O商鋪_27【商品類(lèi)別】刪除商品類(lèi)別從Dao到View層的開(kāi)發(fā)


接下來(lái)我們繼續(xù)實(shí)現(xiàn)商品部分的功能。

功能點(diǎn):

1. 商品的添加

2. 商品圖片的批量添加(主要是指商品詳情部分的圖片)


重溫實(shí)體類(lèi)

Prouct

package com.artisan.o2o.entity;import java.util.Date; import java.util.List;public class Product {private Long productId;private String productName;private String productDesc;/*** 簡(jiǎn)略圖*/private String imgAddr;/*** 原價(jià)*/private String normalPrice;/*** 折后價(jià)*/private String promotionPrice;private Integer priority;private Date createTime;private Date lastEditTime;/*** -1 不可用 0 下架 1 展示*/private Integer enableStatus;/*** 產(chǎn)品對(duì)應(yīng)的詳情列表,一對(duì)多*/private List<ProductImg> productImgList;/*** 產(chǎn)品所屬產(chǎn)品目錄*/private ProductCategory productCategory;/*** 產(chǎn)品所屬店鋪*/private Shop shop;// setter/gettter省略}

ProductImg

package com.artisan.o2o.entity;import java.util.Date;public class ProductImg {private Long productImgId;private String imgAddr;private String imgDesc;private Integer priority;private Date createTime;// 只需要一個(gè)productId屬性,不需要獲取Product的其他屬性,所以這里直接使用Long類(lèi)型的productId,而沒(méi)有使用Product。private Long productId;// setter/gettter省略}

ProductDao接口

package com.artisan.o2o.dao;import com.artisan.o2o.entity.Product;public interface ProductDao {/*** * * @Title: insertProduct* * @Description: 增加商品* * @param product* * @return: int*/int insertProduct(Product product); }

Mapper配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.artisan.o2o.dao.ProductDao"><insert id="insertProduct" parameterType="com.artisan.o2o.entity.Product" useGeneratedKeys="true" keyProperty="productId" keyColumn="product_id">INSERT INTOtb_product(product_name,product_desc,img_addr,normal_price,promotion_price,priority,create_time,last_edit_time,enable_status,product_category_id,shop_id)VALUES(#{productName},#{productDesc},#{imgAddr},#{normalPrice},#{promotionPrice},#{priority},#{createTime},#{lastEditTime},#{enableStatus},#{productCategory.productCategoryId},#{shop.shopId})</insert></mapper>

ProductImgDao接口

package com.artisan.o2o.dao;import java.util.List;import com.artisan.o2o.entity.ProductImg;public interface ProductImgDao {/*** * * @Title: batchInsertProductImg* * @Description: 一個(gè)商品下可能擁有多個(gè)圖片,所以這里是批量新增商品圖片* * @param productImgList* * @return: int*/int batchInsertProductImg(List<ProductImg> productImgList); }

Mapper配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.artisan.o2o.dao.ProductImgDao"><insert id="batchInsertProductImg" parameterType="com.artisan.o2o.entity.ProductImg" useGeneratedKeys="true" keyProperty="productImgId" keyColumn="product_img_id">INSERT INTOtb_product_img(img_addr,img_desc,priority,create_time,product_id)VALUES<foreach collection="list" item="productImg" index="index" separator=",">(#{productImg.imgAddr},#{productImg.imgDesc},#{productImg.priority},#{productImg.createTime},#{productImg.productId})</foreach></insert></mapper>

單元測(cè)試

注意表之間的外鍵關(guān)系,確保數(shù)據(jù)之間的約束正確。

否則會(huì)引起如下類(lèi)似錯(cuò)誤

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`o2o`.`tb_product_img`, CONSTRAINT `fk_proimg_product` FOREIGN KEY (`product_id`) REFERENCES `tb_product` (`product_id`) ON DELETE CASCADE ON UPDATE CASCADE)

#ProductDaoTest

package com.artisan.o2o.dao;import java.util.Date;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.Product; import com.artisan.o2o.entity.ProductCategory; import com.artisan.o2o.entity.Shop;public class ProductDaoTest extends BaseTest {@AutowiredProductDao productDao;@Testpublic void testInsertProdcut() {// 注意表中的外鍵關(guān)系,確保這些數(shù)據(jù)在對(duì)應(yīng)的表中的存在ProductCategory productCategory = new ProductCategory();productCategory.setProductCategoryId(36L);// 注意表中的外鍵關(guān)系,確保這些數(shù)據(jù)在對(duì)應(yīng)的表中的存在Shop shop = new Shop();shop.setShopId(5L);Product product = new Product();product.setProductName("test_product");product.setProductDesc("product desc");product.setImgAddr("/aaa/bbb");product.setNormalPrice("10");product.setPromotionPrice("8");product.setPriority(66);product.setCreateTime(new Date());product.setLastEditTime(new Date());product.setEnableStatus(1);product.setProductCategory(productCategory);product.setShop(shop);int effectNum = productDao.insertProduct(product);Assert.assertEquals(1, effectNum);}}

ProductImgDaoTest

package com.artisan.o2o.dao;import java.util.ArrayList; import java.util.Date; import java.util.List;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.ProductImg;public class ProductImgDaoTest extends BaseTest {@Autowiredprivate ProductImgDao productImgDao;@Testpublic void testBatchInsertProductImg() {ProductImg productImg1 = new ProductImg();productImg1.setImgAddr("/xiaogongjiang/xxxx");productImg1.setImgDesc("商品詳情圖片1");productImg1.setPriority(99);productImg1.setCreateTime(new Date());productImg1.setProductId(2L);ProductImg productImg2 = new ProductImg();productImg2.setImgAddr("/artisan/xxxx");productImg2.setImgDesc("商品詳情圖片2");productImg2.setPriority(98);productImg2.setCreateTime(new Date());productImg2.setProductId(2L);// 添加到productImgList中List<ProductImg> productImgList = new ArrayList<ProductImg>();productImgList.add(productImg1);productImgList.add(productImg2);// 調(diào)用接口批量新增商品詳情圖片int effectNum = productImgDao.batchInsertProductImg(productImgList);Assert.assertEquals(2, effectNum);}}

單元測(cè)試正常 ,測(cè)試通過(guò)


Github地址

代碼地址: https://github.com/yangshangwei/o2o

總結(jié)

以上是生活随笔為你收集整理的实战SSM_O2O商铺_28【商品】商品添加之Dao层的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。