共计 4314 个字符,预计需要花费 11 分钟才能阅读完成。
需要剖析
任何一个电商零碎中都有一个商品子系统,而与商品相关联都会有一个品牌信息管理,在以后业务零碎设计中咱们就是要对商品品牌信息进行设计和实现。
业务架构
在品牌 (Brand) 信息管理中就是要实现对商品品牌信息的增加,批改,查问,删除等业务,user 是后盾管理员, 如图所示
原型设计
基于品牌业务形容,对品牌模块的业务原型进行剖析和设计,如图所示
技术架构
在品牌治理模块实现郭晨,咱们采纳典型的 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;
insert into tb_brand values (null,'联想','very good',now());
insert into tb_brand values (null,'小米','very good',now());
insert into tb_brand values (null,'美的','very good',now());
insert into tb_brand values (null,'九阳','very good',now());
insert into tb_brand values (null,'TCL','very good',now());
insert into tb_brand values (null,'创维','very good',now());
insert into tb_brand values (null,'华为','very good',now());
我的项目环境初始化
筹备操作
(1)JDK 1.8
(2)Maven 3.6.3
(3)IDEA 2020.2
(4)MySql 5.7+
初始化数据库
在 cmd 窗口下进行如下操作
登录 mysql
mysql -uroot -proot
设置客户端编码
set names utf8;
执行 sql 脚本
source:d/brand.sql
创立我的项目 Mouble
增加我的项目 Moudle 依赖
<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>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
我的项目 Mouble 根底配置
关上我的项目 Mouble 配置文件 applicatin.properties,并增加如下内容
server.port=80
spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:/mapper/*/*.xml
logging.level.com.cy=debug
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
启动我的项目并进行初步环境测试剖析
品牌模块整体 API 设计
品牌数据的查问及出现
业务形容
将数据库中的品牌查问进去,而后在客户端基于 Html 技术进行出现,如图所示
服务端查问时序设计
畛域对象 (POJO) 设计及实现
设置 Brand 对象,基于此对象封装从数据库查问到的品牌信息,代码如下
第一步:定义 BrandDao 接口,代码如下:
package com.cy.pj.brand.pojo;
import java.util.Date;
public class Brand {
private Integer id;
private String name;
private String logo;
private String remark;
private Date createdTime;
public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String getLogo() {return logo;}
public void setLogo(String logo) {this.logo = logo;}
public String getRemark() {return remark;}
public void setRemark(String remark) {this.remark = remark;}
public Date getCreatedTime() {return createdTime;}
public void setCreatedTime(Date createdTime) {this.createdTime = createdTime;}
@Override
public String toString() {
return "Brand{" +
"id=" + id +
", name='" + name + '''+", logo='"+ logo +''' +
", remark='" + remark + '''+", createdTime="+ createdTime +'}';
}
}
数据逻辑对象 (DAO) 查询方法设计及实现
第一步: 定义 Brand 接口,代码如下:
package com.cy.pj.brand.dao;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public class 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;
import com.cy.pj.brand.pojo.Brand;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class BrandDaoTests {
@Autowired
private BrandDao brandDao;
@Test
public void testFindBrands(){List<Brand> list=brandDao.findBrands("TCL");
for (Brand b:list) {System.out.println(b);
}
}
}
第五步: 测试过程中的 BUG 剖析?
SQL 异样:查看本人的数据库语句是否正确
输入异样:测试输入对象为对象地址表现形式,而不是内容?(查看 toString 办法是否重写)
业务逻辑对象 (Service) 查询方法设计及实现
管制逻辑对象 (Controller) 查询方法设计及实现
客户端品牌列表页面设计及实现
启动服务进行拜访测试并对后果进行剖析
启动及运行过程中的 Bug 剖析及解决方案