大概描述了开发这个项目的目的、市场需求、和预期达到的一个目的javascript
业务架构分析就是对项目功能的分析,此项目实现的功能是增删改查,css
基于品牌业务描述,对品牌模块的业务原型进行分析和设计html
在品牌管理模块实现过程,咱们采用典型的C/S架构进行实现.客户端咱们基于浏览器进行实现,服务端采用tomcat,数据库使用MySQL.具体应用层基于MVC分层架构进行实现.java
基于分层架构设计思想,现对品牌API进行设计mysql
库的建立和表的创建web
编码方式,若是利用的脚本的形式,须要加上set names gbk在查看,不然会出现乱码,执行基本语句:`
source d:/brand.sqlspring
<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>
健康管理依赖sql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
热部署数据库
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
#spring server server.port=80 # spring datasource spring.datasource.url=jdbc:mysql:///dbbrand?serverTimezone=GMT%2B8&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root # spring mybatis mybatis.mapper-locations=classpath:/mapper/*/*.xml # spring log logging.level.com.cy=debug #spring thymeleaf spring.thymeleaf.cache=false spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html
private Integer id; private String name; private String remark; private Date createdTime;
属性设计须要和数据库里的属性设计名称同样bootstrap
第一步:定义BrandDao接口,代码以下:
第二步:在BrandDao中定义品牌查询方法,代码以下:
第三步:基于查询方法定义SQL映射.
<?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"> <mapper namespace="com.cy.pj.brand.dao.BrandDao"> <select id="findBrands" resultType="com.cy.pj.brand.pojo.Brand"> select id,name,remark,createdTime from tb_brand <if test="name!=null and name!=''"> where name like concat("%",#{name},"%") </if> </select> </mapper>
映射文件的命名须要和配置里设置的同样
业务逻辑对象负责模块的具体业务处理,例如参数校验,事务控制,权限控制,日志记录等.
第一步:定义业务接口
第二步:在BrandService接口中添加品牌查询方法
第三步:定义BrandService接口实现类BrandServiceImpl.
第四步:定义BrandService接口方法的单元测试类,并业务进行测试分析
在控制逻辑对象中主要是负责请求和响应逻辑控制,例如请求url映射,参数映射,请求方式,结果集的封装,解析,响应的设计等.
第一步:定义Controller类
第二步:在Controller添加处理查询请求的方法
1)@GetMapping描述方法时,表示这个方法只能处理Get请求,注解内部的value属性能够指定多个url.
2)@PathVariable 用于描述方法参数,表示方法参数的值能够来自url中{}内部的变量值,required=false表示参数能够不传值.
在项目的templates目录下建立brand目录并添加brand.html页面,
1)${}为thymeleaf为中的EL表达式,用于从服务端model中获取数据
2)th:each为thymeleaf定义的自定义标签属性,用于迭代数据.
3)th:text为thymeleaf定义的自定义标签属性,用于设置文本内容.
品牌模块删除业务分析及实现
在品牌列表页面中,点击当前行记录后面的删除按钮,基于当前行的记录id执行品牌删除操做
基于业务,在BrandDao接口中添加删除方法
基于删除方法,定义SQL映射(本次直接以注解方式进行定义):
在BrandDaoTests单元测试类中添加单元测试方法,对删除操做进行测试,
在业务逻辑对象方法中,要处理删除操做须要的一些业务逻辑(后续有参数校验,权限控制,....).
第一步:在BrandService接口中添加,品牌删除的业务方法
第二步:在BrandServiceImpl类中添加删除业务的具体实现
在控制层对象中定义处理删除请求的方法
在tbody的tr中添加一列,
定义javascript函数,处理删除事件
function doDeleteById(id){ //给出提示信息 if(!confirm("您确认删除吗"))return;//confirm为浏览器中window对象的函数 //执行删除业务 location.href=`http://localhost/brand/doDeleteById/${id}`; }
在列表页面上,设计添加按钮,当点击添加按钮时,跳转到添加页面,而后在添加页面上数据品牌信息,点击Save按钮就数据提交到服务端进行保存.
第一步:在BrandDao中添加用于保存品牌信息的方法,代码以下:
第二步:在BrandMapper中添加品牌保存操做对应的sql映射,代码以下:
<insert id="insertBrand"> insert into tb_brand (name,remark,createdTime) values (#{name},#{remark},now()) </insert>
第一步:在BrandService业务接口中中定义用于保存品牌信息的方法
第二步:在BrandServiceImpl业务实现类中添加保存品牌信息的具体实现
第一步:在BrandController中添加用于处理请求添加页面的方法
第二步:在BrandController添加用于处理添加品牌信息页面的方法
第一步:设计品牌添加页面brand-add.html,
第二步:在品牌列表brand.html页面,设计添加按钮
第三步:点击添加按钮时,加载品牌添加页面,事件处理函数
在品牌列表页面,点击当前行的修改按钮,先基于id查询当前行记录,并将记录呈如今编辑页面,
基于id查询品牌信息并呈如今页面上,其时序分析如图所示:
在BrandDao中添加基于id查询品牌信息的方法及SQL映射,代码以下:
@Select("select * from tb_brand where id=#{id}") Brand findById(Integer id);
在BrandDao中添加基于id执行品牌更新的方法及SQL映射,代码以下:
@Update("update tb_brand set name=#{name},remark=#{remark} where id=#{id}") int updateBrand(Brand Brand);
在BrandService 中添加基于id查询品牌信息和更新品牌信息的方法,代码以下:
Brand findById(Integer id); int updateBrand(Brand brand);
在BrandServiceImpl中基于id查询品牌信息和更新品牌信息的方法
在BrandController中添加基于id查询品牌信息的方法
在BrandController中添加更新品牌信息的方法
第一步:设计品牌修改页面brand-update.html