关于项目的开发流程
在项目中,起到主要的关键作用的组件分别是:
- Controller:接收请求,响应结果,另外,调用Service
- Service:处理业务流程和业务逻辑,另外,调用Mapper
- Mapper:实现增删改查
当开发一个新的功能时,应该遵循的顺序是:Mapper >>> Service >>> Controller
为了保证开发过程顺序执行,应该事先规划,规划完毕再编写代码。
以实现“创建属性模板”为例,大致的开发步骤为:
1. 开发Mapper
1.1. 规划需要执行的SQL语句
insert into pms_attribute_template (除了id以外的字段列表) values (与字段列表匹配的值列表)
select count(*) from pms_attribute_template where name=?
1.2. 在接口中添加抽象方法
int insert(AttributeTemplate attributeTemplate);
int countByName(String name);
1.3. 在XML中配置SQL语句
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
</insert>
<select id="countByName" resultType="int">
</select>
1.4. 测试
2. 开发Service
2.1. 规划业务流程与业务逻辑
设定规则:属性模板的名称必须唯一,需要Mapper实现“根据属性模板的名称统计数据的数量”
设定规则:如果客户端没有提交sort,则处理为0
2.2. 在接口中添加抽象方法(可能需要创建DTO类)
创建“增加属性模板的DTO类(AttributeTemplateAddNewDTO)”,在类中添加属性:String name
在接口中添加抽象方法:void addNew(AttributeTemplateAddNewDTO attributeTemplateAddNewDTO);
2.3. 在实现类实现以上方法
【业务流程】(如果不清楚业务流程,从后往前写)
根据参数中的name,调用Mapper的countByName()进行统计
判断统计结果是否大于0
是:抛出异常
(注意:不需要写if对应的else,因为抛出异常就不会继续向下执行,如果能执行到下面的代码则不满足if条件)
创建AttributeTemplate类型的对象
将参数中的值复制到以上创建的对象中
判断AttributeTemplate的sort有没有值,如果没有,则设置为0
调用Mapper的insert()方法执行插入数据,并获取返回结果
如果返回结果不为1,则抛出异常
3. 开发Controller
3.1. 添加处理请求的方法
方法的返回值类型为JsonResult
方法的名称是自定义的
方法的参数就是AttributeTemplateAddNewDTO
方法上需要添加@PostMapping来配置请求路径
方法的内部将调用Service来实现功能
3.2. 完善Knife4j的一些配置
在控制器类上使用@Api注解配置tags属性,指定模块名称
在处理请求的方法上使用@ApiOperation注解配置value属性,指定业务名称,再添加@ApiOperationSupport注解配置order属性,指定排序序号