• 校园商铺-4店铺注册功能模块-1Dao层之新增店铺


    1. 系统功能开发的优先级。

    项目共有3个系统,前端展示系统,店家管理系统,超级管理员管理系统。
    店家的优先级是最高的,因为最有可能带来收益的是店家,而且一旦店家系统开发出来,店家往系统里填写商品信息、前端展示系统才有展示的数据源。
    超级管理员系统可以用手工录入的方式来代替,优先级是最低。
    分析之后,开发的优先级从高到低依次为店铺管理、前端展示、超级管理员系统。

    2. 项目1.0-店家管理系统开发

    店家可以通过店家管理系统来管理店铺信息

    • 店铺
    • 商品

    2.1 店铺注册从底层到前端开发

    学习目标:

    • 连接数据库
    • Mybatis数据库表映射关系配置
      永远不会改变的配置:driver(那种类型的数据库)、数据库的地址、用户名、密码、连接池最大的线程数
    • dao->service->controller层代码的编写,Junit的使用
    • Session,图片处理工具Thumbnailator的使用
    • suimobile前端设计与开发

    2.2 创建Dao接口

    package com.csj2018.o2o.dao;
    import com.csj2018.o2o.entity.Shop;
    public interface ShopDao {
    	/**
    	 * 新增店铺
    	 * @param shop
    	 * @return 返回影响的行数;-1插入失败
    	 */
    	int insertShop(Shop shop);
    }
    

    2.3 myBatis配置文件

    <?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" >
     <!-- useGeneratedKeys="true",一旦数据插入成功,使用JDBC的getGeneratedKeys获取数据库自增主键值 -->
    <mapper namespace="com.csj2018.o2o.dao.ShopDao">
    	<insert id="insertShop" useGeneratedKeys="true"
    		keyColumn="shop_id" keyProperty="shopId">
    		insert into
    		tb_shop(ower_id,area_id,shop_category_id,shop_name,
    		shop_desc,shop_addr,phone,shop_img,priority,
    		create_time,last_edit_time,enable_status,advice)
    		values
    		(#{owner.userId}, #{area.areaId}, #{shopCategory.shopCategoryId}, #{shopName},
    		#{shopDesc}, #{shopAddr}, #{phone}, #{shopImg}, #{priority},
    		#{createTime}, #{lastEditTime}, #{enableStatus}, #{advice})
    	</insert>
    </mapper>
    

    useGeneratedKeys="true":一旦数据添加成功,我们就会通过jdbc来获取它的主键的值,然后将它插入到传入的实体类即shop对象中。
    当我们添加店铺信息的时候,同时也需要存储店铺的图片,为了保证图片存储的合理性,我们需要将属于这个店铺的图片存储在这个店铺的目录下。这就导致了每个店铺拥有的名字是不相同的。我们需要依靠店铺的主键去区分店铺、名字,因此在存储图片的时候,需要获取店铺的id,也就是说一旦店铺添加完成,就需要记录返回它的店铺id。
    疑问:店铺添加完成,再去数据库查询最新的id,不是一样吗?
    解析:操作也是可以的,但有隐患:1.操作麻烦 2.如果多线程操作,其他的线程进行了同样的操作,返回的id就非想操作的id,造成乱序。
    如果店铺完成不会有插入图片的需求,即不需要获取店铺的shopId,将useGeneratedKeys设置为false即可。
    总之,设计一个系统要考虑它的灵活性

    2.4 Junit测试

    Shop.java还有3个类,Area,PersonInfo,ShopCategory,Area已有数据,其他两个还是空表,因此需要添加数据

    insert into tb_person_info(`name`,`profile_img`,`email`,`gender`,`enable_status`,`user_type`) 
    	values ('测试','test_person_png',"test@126.com",1,1,2);
    insert into tb_shop_category(`shop_category_name`,`shop_category_desc`,`shop_category_img`,`priority`)
    	values('咖啡奶茶','飘香醇厚咖啡加上芳美浓郁的牛奶,两种经典饮品的绝妙搭配,两种滋味的碰撞,形成了具有双重口感享受的饮品!','test_shop_catetgory_png',1);
    

    测试代码

    package com.csj2018.o2o.dao;
    
    import static org.junit.Assert.assertEquals;
    
    import java.util.Date;
    
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import com.csj2018.o2o.BaseTest;
    import com.csj2018.o2o.entity.Area;
    import com.csj2018.o2o.entity.PersonInfo;
    import com.csj2018.o2o.entity.Shop;
    import com.csj2018.o2o.entity.ShopCategory;
    
    public class ShopDaoTest extends BaseTest{
    	@Autowired
    	private ShopDao shopDao;
    	@Test
    	public void testInsertShop() {
    		Shop shop = new Shop();
    		
    		PersonInfo owner = new PersonInfo();
    		Area area = new Area();
    		ShopCategory shopCategory = new ShopCategory();
    		owner.setUserId(1L);
    		area.setAreaId(2);
    		shopCategory.setShopCategoryId(1L);
    		
    		shop.setOwner(owner);
    		shop.setArea(area);
    		shop.setShopCategory(shopCategory);
    		shop.setShopName("测试de店铺");
    		shop.setShopDesc("店铺描述");
    		shop.setShopAddr("测试路1号");
    		shop.setPhone("123456789");
    		shop.setShopImg("shopimg");
    		shop.setCreateTime(new Date());                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    		shop.setEnableStatus(1);
    		shop.setAdvice("审核中");
    		shop.setPriority(3);
            int effectedNum = shopDao.insertShop(shop);
    		assertEquals(1,effectedNum);
    	}
    }
    

    3. 问题:一直执行失败,打印日志观察

    日志给出的错误不明显,需要自己去捕捉异常
    ShopDaoTest.java添加捕捉异常代码

    		try{
    			int effectedNum = shopDao.insertShop(shop);
    			assertEquals(1,effectedNum);
    			System.out.print(effectedNum);
    		}catch (Exception e) {
    			e.printStackTrace();
    		}	
    
    原来是自己的成员变量拼写错误,此处大骂自己三声猪头 Shop.java部分问题代码 ```#java private String adevice; public String getAdevice() { return advice; } public void setAdevice(String adevice) { this.advice = adevice; } ```
  • 相关阅读:
    pip 安装用 国内清华大学的数据源
    sql server 中导出图片并命名
    金跌 K3 科目表
    SQLSERVER 循环
    语句判断记录是否存在(最简洁简单性能最优)
    增、删、改开放时间表时,同步数据至 CP
    [网络流24题] 圆桌问题(最大流)
    [网络流24题] 最小路径覆盖问题(匈牙利 最大流)
    C. Vasya And Array (贪心构造)
    【牛客网】一个有意思的前缀和题目
  • 原文地址:https://www.cnblogs.com/csj2018/p/11578513.html
Copyright © 2020-2023  润新知