SSM项目之商铺系统(五) DAO层之新增店铺和更新店铺


一、新增店铺:

第一步:建立DAO层接口并且实现新增店铺功能的接口

在这里插入图片描述在这里插入图片描述

第二步:建立ShopDao的xml映射文件并且实现了相应的功能

在这里插入图片描述

    <!--useGeneratedKeys开启了返回自增主键 的值,这样直接将表中主键值存入了相应的实体类中的属性
             keyColumn指定数据表中主键的列名
             keyProperty指定实体类中对应主键的属性名
    -->
    <insert id="insertShop" useGeneratedKeys="true" keyColumn="shop_id" keyProperty="shopId">
        INSERT INTO
        tb_shop(owner_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>

我们插入了一个商铺的所有信息
第三步:接下来完成测试

public class ShopDaoTest extends BaseTest {
    @Autowired
    private ShopDao shopDao;
    @Test
    public void testInsertShop(){
        Shop shop=new Shop();
        PersonInfo personInfo=new PersonInfo();
        ShopCategory shopCategory=new ShopCategory();
        Area area =new Area();
        personInfo.setUserId(1L);//long型后面加L
       shopCategory.setShopCategoryId(1L);
        area.setAreaId(2);
        shop.setOwner(personInfo);
        shop.setArea(area);
        shop.setShopName("测试的店铺");
        shop.setShopCategory(shopCategory);
        shop.setShopAddr("test");
        shop.setPhone("test");
        shop.setShopDesc("test");
        shop.setShopImg("test");
        shop.setCreateTime(new Date());
        shop.setAdvice("审核中");
        shop.setEnableStatus(1);
      int effect =shopDao.insertShop(shop);
        Assert.assertEquals(1,effect);
    }
}

测试思路:

我们新建一个shop实体类,手动装配所有shop的信息,通过shopDao的接口实现类(这里用的接口因为我们用autowired装配害会,他会自己装配实现类)的插入方法插入这个shop,我们查看通过返回值(操作影响的行数)判断是否成功插入。

  • 注意:我们的Shop实体类中,有3个属性
/**
	 * 店铺所属店主
	 */
	private PersonInfo owner;
	/**
	 * 店铺所在区域
	 */
	private Area area;
	/**
	 * 店铺类别
	 */
	private ShopCategory shopCategory;

我们在设计表关系的时候,设置了外键关系,因此务必确保 设置的这几个id在对应的表中存在.

这里我们先手工插入几条数据方便单元测试。

tb_area 做SSM集成验证的时候新增了几条数据如下:
在这里插入图片描述
tb_person:
在这里插入图片描述

tb_shop_category:
在这里插入图片描述
运行单元测试,运行OK。

查看数据库中对应的数据:
在这里插入图片描述

二、更新店铺 :

第一步:建立DAO层接口并建立相应的方法
在这里插入图片描述
第二步:配置相应的mapper配置文件
在这里插入图片描述
在这里插入图片描述
思路:
我们用到了动态sql语句,因为我们每次更新并不是更新每条记录,所以我们判断每个传入的属性是否为空,为空则不需要更新,不为空我们则需要更新,注意:最后一个语句不需要“,”。最后限定条件为shop_id。

第三步:测试

第一步建立相应的test类

在这里插入图片描述测试代码:

public class ShopDaoTest extends BaseTest {
    @Autowired
    private ShopDao shopDao; 
@Test
    public void testUpdateShop(){
        Shop shop=new Shop();
        shop.setShopId(6L);
        shop.setShopName("测试更新的店铺");
        shop.setShopAddr("test更新");
        shop.setPhone("test更新");
        shop.setShopDesc("test更新");
        shop.setShopImg("test更新");
        shop.setLastEditTime(new Date());
        shop.setAdvice("test更新审核中");
 
        int effect =shopDao.updateShop(shop);
        Assert.assertEquals(1,effect);
    }
}

选中该方法,右键运行单元测试,没有错误,查看数据库中的数据变化,是否符合预期。

在这里插入图片描述

测试思路:

自己建立一个shop实例并且完成相应的属性赋值,通过shopDao的接口的方法返回值(操作的行数)判断是否完成修改。

这里有一个问题困扰我很久,由于建表的时候表里的数据和要插入的数据主键值不匹配,所以我要先删除表中的数据,存在外键约束问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值