需要剖析

任何一个电商零碎中都有一个商品子系统,而与商品相关联都会有一个品牌信息管理,在以后业务零碎设计中咱们就是要对商品品牌信息的治理进行设计和实现.

业务架构

在品牌(Brand)信息管理中就是要实现对商品品牌信息的增加,批改,查问,删除等业务,如图所示:

原型设计

基于品牌业务形容,对品牌模块的业务原型进行剖析和设计,如图所示:

技术架构

在品牌治理模块实现过程,咱们采纳典型的C/S架构进行实现.客户端咱们基于浏览器进行实现,服务端采纳tomcat,数据库应用MySQL.具体应用层基于MVC分层架构进行实现.

技术栈选型

  • 客户端技术:html,css,javascript,bootstrap
  • 服务端技术:spring,mybatis,springboot,thymeleaf
  • 数据库技术:MySQL,SQL

数据库及表设计

drop database if exists dbbrand;create database dbbrand default character set utf8;use dbbrand;create table tb_brand(     id bigint primary key auto_increment,     name varchar(100) not null,     remark text,     createdTime datetime not null)engine=InnoDB;

我的项目环境初始化

筹备操作

1)JDK 1.8
2)Maven 3.6.3
3)IDEA 2020.2
4)MySQL 5.7+

初始化数据库

关上mysql自带客户端,登录mysql.

mysql -uroot -proot

设置客户端编码

set names utf8;

执行sql脚本

source d:/brand.sql

创立我的项目Module

增加我的项目Module依赖

<dependency>   <groupId>mysql</groupId>   <artifactId>mysql-connector-java</artifactId>   <scope>runtime</scope></dependency>
<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>
<dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId>   <version>2.1.3</version></dependency>
<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId></dependency>
<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

我的项目Module根底配置

关上我的项目Module配置文件application.properties,并增加如下内容:

server.port=80spring.datasource.url=jdbc:mysql:///dbbrand?serverTimezone=GMT%2B8&characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=rootmybatis.mapper-locations=classpath:/mapper/*/*.xmllogging.level.com.cy=debugspring.thymeleaf.cache=falsespring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html

启动我的项目进行初步环境测试剖析

品牌模块整体API设计

品牌数据的查问及出现

业务形容

将数据库中的品牌信息查问进去,而后在客户端基于html技术进行出现,如图所示:

服务端查问时序设计

畛域对象(POJO)设计及实现

设置Brand对象,基于此对象封装从数据库查问到的品牌信息,代码如下:

package com.cy.pj.brand.pojo;import java.util.Date;public class Brand{    private Integer id;    private String name;    private String remark;    private Date createdTime;    //.....}

数据逻辑对象(DAO)查询方法设计及实现

第一步:定义BrandDao接口,代码如下:

package com.cy.pj.brand.dao;@Mapperpublic interface BrandDao{}

第二步:在BrandDao中定义品牌查询方法,代码如下:

List<Brand> findBrands(String name);

第三步:基于查询方法定义SQL映射(本次sql映射基于注解形式定义),代码如下:

@Select("select * from tb_brand where name like concat ('%',#{name},'%')")List<Brand> findBrands(String name);

当然,对于这个SQL映射也能够写到映射文件(BrandMapper.xml)

第四步:对数据层的查询方法进行单元测试,代码如下:

package com.cy.pj.brand.dao;@SpringBootTestspublic class BrandDaoTests{     @Autowired     private BrandDao brandDao;     @Test     void testFindBrands(){        List<Brand> list=brandDao.findBrands("TCL");        for(Brand b:list){           System.out.println(b);        }     }}

第五步:测试过程中的BUG剖析?

  • 测试输入为对象地址表现形式,而不是内容?(查看toString办法是否重写)

业务逻辑对象(Service)查询方法设计及实现

管制逻辑对象(Controller)查询方法设计及实现

客户端品牌列表页面设计及实现

启动服务进行拜访测试并对后果进行剖析

启动及运行过程中的Bug剖析及解决方案