当前位置: 首页 > news >正文

网站建设 太原企业营销推广策划

网站建设 太原,企业营销推广策划,微网站开发手机模拟器,网站开发微信支付详细教程在此之前,先来补充一下上一篇文章的一点内容:上一篇文章点击此处详看 对于画线的这句话,来详细解释一下吧! 这里面说,对于service服务层,如果我们所需要实现的业务比较简单的话可以直接在...service接口里面…

在此之前,先来补充一下上一篇文章的一点内容:上一篇文章点击此处详看

对于画线的这句话,来详细解释一下吧!

这里面说,对于service服务层,如果我们所需要实现的业务比较简单的话可以直接在...service接口里面将方法实现,而复杂的业务逻辑则需要另外加一个实现类...serviceImpl来实现对应的方法。

这里再补充一下:就是我们在后端代码编写的时候,Impl实现类并不是必须的,其实它只是起到一个使得我们写的业务逻辑代码更加清晰,不会使得方法看起来很复杂。

这里可以举一个简单的例子:

比如我们正在开发一个外卖管理平台,那么我们肯定需要将要出售的菜品展示给用户看,我们从平台管理者的角度看,最简单的业务就是对菜品的增删查改,而这个增删查改的逻辑其实都差不多,但它们都是属于对菜品的管理,四个功能需要四个方法来实现,那么我们在编写代码时,肯定先在controller控制层先响应请求,然后再到服务层来实现这几个方法,而在service服务层,我们如果要把四个方法都写在...service类里面的话,那就包括(实现方法的逻辑代码,sql的编写)对于sql的编写,若是简单的sql倒没什么,如果是比较复杂的动态sql,那么全部堆在这个service类里面,下次需要来修改什么功能的话会相当难找,还可能影响到其他的功能。而这时候我们就需要再加一个ImplService实现类,在service接口层里面单纯地定义方法,再将方法的具体实现代码编写到ImplService实现类里面,接着,将复杂的动态sql编写到xml文件里面。这样,如果我们需要修改哪个方法或sql语句,我们就随时可以定位到该位置快速修改,不会太冗杂。

当然,上面说了,并不是所有的业务逻辑都需要Impl实现类,就像上一篇文章里面的新增员工业务,单纯的实现这个功能只需要一句简单的sql语句,我们就不需要另开一个实现类去实现。

好了,进入正题,我们来分析学习下面的代码开放思路!

eg.这是一个关于删除的业务(删除套餐)

先对其进行需求分析:

业务规则:

  • 可以一次删除一个套餐,也可以批量删除套餐

  • 起售中的套餐不能删除

接口信息:

        Path: /admin/setmeal

        Method: DELETE

接口描述:

        请求参数:Query

                参数名称:ids       必须       

        返回数据:

                数据名称:code      非必须

                                  data       非必须

                                  msg       非必须

代码实现:controller—> service—> serviceImpl—> mapper—> (动态sql--mapper.xml)

SetmealController:
/*** 批量删除套餐* @param ids* @return
*/
@DeleteMapping
@ApiOperation("批量删除套餐")
public Result delete(@RequestParam List<Long> ids){setmealService.deleteBatch(ids);return Result.success();
}

首先,先编写Controller层,封装所需要的数据,其中ids,我们可以从上面的接口信息知道这是请求参数且是必须的,所以delete()括号中需要封装前端提交过来的请求参数,接着就需要一个根据ids删除的方法对吧(deleteBatch),我们可以先将其写出来,然后再到setmealService接口层去创建这个方法。最后返回响应结果。

SetmealService:
/*** 批量删除套餐* @param ids
*/
void deleteBatch(List<Long> ids);

SetmealService接口层,这里面单纯定义方法给Controller控制层调用实现删除功能。

而具体的实现逻辑是在实现类编写。

SetmealServiceImpl:
/*** 批量删除套餐* @param ids
*/
@Transactional
public void deleteBatch(List<Long> ids) {ids.forEach(id -> {Setmeal setmeal = setmealMapper.getById(id);if(StatusConstant.ENABLE == setmeal.getStatus()){//起售中的套餐不能删除throw new DeletionNotAllowedException(MessageConstant.SETMEAL_ON_SALE);}});ids.forEach(setmealId -> {//删除套餐表中的数据setmealMapper.deleteById(setmealId);//删除套餐菜品关系表中的数据setmealDishMapper.deleteBySetmealId(setmealId);});
}

SetmealServiceImpl就是所需的实现类,在里面编写删除方法的具体逻辑,其中,if条件语句是在判断要删除的套餐中是否有菜品正在起售,如果有则返回错误信息,没有则删除套餐中的数据和套餐菜品关系表中的数据。当然,这里没有展示套餐表和菜品表。理解其逻辑就行!接着,在这里面,要实现对套餐中菜品信息的遍历和删除,需要用到getById()和deteleById()以及deleteBySetmealId()3个方法。它们都将在mapper持久层中实现。

SetmealMapper:
/*** 根据id查询套餐* @param id* @return
*/
@Select("select * from setmeal where id = #{id}")
Setmeal getById(Long id);/*** 根据id删除套餐* @param setmealId
*/
@Delete("delete from setmeal where id = #{id}")
void deleteById(Long setmealId);

这是对套餐表进行查询和删除!这里我们可以看到,在方法上面直接进行sql的实现,这是因为这个业务删除的复杂度并不高,所以不需要用到动态sql,如果需要的话,会另外编写在XML文件中。

SetmealDishMapper:
/*** 根据套餐id删除套餐和菜品的关联关系* @param setmealId
*/
@Delete("delete from setmeal_dish where setmeal_id = #{setmealId}")
void deleteBySetmealId(Long setmealId);

这是对套餐菜品关系表进行数据的删除!

 大概的代码开发逻辑就是这样,意会意会!这也是对上一篇文章所说的业务逻辑代码开放思路的一个具体解释和举例!希望对你有帮助!

👍

http://www.hkea.cn/news/436481/

相关文章:

  • 可以在线做动图的网站近期重大新闻事件
  • 伊犁州建设局网站怎么做微信小程序
  • 做网站需要买主机那新媒体营销方式有几种
  • 网络推广seo公司seo排名的方法
  • 南山做网站多少钱百度资讯
  • 西安哪里有做网站的小学生收集的新闻10条
  • 做游戏网站有几个要素seo网站关键词优化报价
  • 蓬业东莞网站建设技术支持东莞做网站公司首选
  • 网站版式设计获客渠道有哪些
  • 今日军事新闻简短扬州seo优化
  • 国外好看的教育类网站模板下载东莞做网站最好的是哪家
  • 微擎与wordpress快速优化seo软件推广方法
  • 英文网站设计哪家好免费网站搭建
  • 网站建设公司 销量深圳谷歌seo公司
  • 新蔡哪有做网站建设的全球疫情今天最新消息
  • 怎么做平台网站百度seo报价方法
  • 帮人做网站 怎么收费怎么用网络推广
  • 网站排名优化建设百度广告投放技巧
  • 文件服务器网站搭建教程好的竞价托管公司
  • 黑龙江省城乡和住房建设厅网站首页百度链接地址
  • 网站模板修改工具专业seo关键词优化
  • 口碑好的句容网站建设yahoo搜索
  • 深圳网站建设外贸公司价格网络营销的背景和意义
  • 长春网站建设硕成传媒seo快速排名优化公司
  • web网站开发能使用c 吗免费建立个人网站申请
  • 织梦网站修改教程视频网站优化培训学校
  • 南沙区交通和建设局网站中国十大网络销售公司
  • 免费建设网站的方法百度网址大全 官网
  • 手机网站设计制作公司微信推广费用一般多少
  • 建设网站需要什么注册域名费用一般多少钱