需要剖析
任何一个电商零碎中都有一个商品子系统,而与商品相关联都会有一个品牌信息管理,在以后业务零碎设计中咱们就是要对商品品牌信息进行设计和实现。
业务架构
在品牌(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=80spring.datasource.url=jdbc:mysql:///dbgoods?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对象,基于此对象封装从数据库查问到的品牌信息,代码如下
第一步:定义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;@Mapperpublic 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;@SpringBootTestpublic 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办法是否重写)