码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-09-24 15:48:19      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:opd   映射关系   获取数据   管理系统   doctype   lse   测试   类型   最大   

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即可。
总之,设计一个系统要考虑它的灵活性

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

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

标签:opd   映射关系   获取数据   管理系统   doctype   lse   测试   类型   最大   

原文地址:https://www.cnblogs.com/csj2018/p/11578513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!