当前位置:网站首页>Coding style: SSM environment in MVC mode, code hierarchical management
Coding style: SSM environment in MVC mode, code hierarchical management
2020-11-10 00:28:00 【Irving the procedural ape】
In this paper, the source code :GitHub· Click here || GitEE· Click here
One 、 Layering strategy
MVC Pattern and code layering strategy ,MVC The full name is ModelViewController The model - View - controller , As a software design paradigm , Using a business logic 、 data 、 The interface displays the separated method organization code , Gather business logic into a component , While improving and personalizing the interface and user interaction , No need to rewrite business logic , It's a development model , But it's not the layered pattern of code in actual development , Usually SSM The framework's back-end code layers are as follows :

- controller Control layer : Define the server interface , In and out , And some input parameters ;
- service Business services layer : Assemble business logic , Business verification , The parameter model needed to build the control layer ;
- dao Data interaction layer : Provide the data query method needed by the service layer , Dealing with logic related to data interaction conditions ;
- mapper Persistence layer : be based on mybatis The framework needs native support , The most commonly used persistence layer component at present ;
Two 、 Control layer
1、Rest The interface style
Based on the logic of resource access and processing , Use different styles of annotations . For example, new resources , to update , Inquire about , Delete .
/** * newly added */@PostMapping("/insert")public Integer insert (@RequestBody BaseInfo baseInfo){ return baseInfoService.insert(baseInfo);}/** * to update */@PutMapping("/update/{id}")public String update(@PathVariable(value = "id") Integer id, @RequestBody BaseInfo baseInfo) { if (id<1){ return "error"; } baseInfo.setId(id); return "update="+baseInfoService.update(baseInfo);}/** * Primary key query */@GetMapping("/detail/{id}")public InfoModel detail(@PathVariable(value = "id") Integer id) { return baseInfoService.detail(id) ;}/** * Delete primary key */@DeleteMapping("/delete/{id}")public String delete(@PathVariable(value = "id") Integer id) { baseInfoService.delete(id) ; return "SUS" ;}
2、 Interface reuse
High reuse of interfaces is not recommended , For example, add, delete, modify and check all the interfaces , The basic principle of , Different client side operations , For independent interfaces .
/** * List loading */@GetMapping("/list")public List<BaseInfo> list() { return baseInfoService.list(new BaseInfoExample()) ;}/** * List search */@PostMapping("/search")public List<BaseInfo> search (@RequestParam("userName") String userName, @RequestParam("phone") String phone) { return baseInfoService.search(userName,phone) ;}
For example, common list Interface ,list Usually, there will be conditional loading search Mechanism , And the search criteria are complex , It is suggested that there are two interfaces , From a practical point of view , Most of the scenarios are only used list Interface , Rarely used search Search for .
3、 In and out
Verification client must be conditional , For example, a certain condition is required , If there are questions , Quickly block the request link , The program entrance control layer intercepts and returns .
@PutMapping("/update/{id}")public String update(@PathVariable(value = "id") Integer id, @RequestBody BaseInfo baseInfo) { if (id<1){ return "error"; } baseInfo.setId(id); return "update="+baseInfoService.update(baseInfo);}
The parameters are less than three , It can be displayed directly into the reference , If there are three or more parameters, entity classes can be used to encapsulate them .
@PostMapping("/search")public List<BaseInfo> search (@RequestParam("userName") String userName, @RequestParam("phone") String phone) { return baseInfoService.search(userName,phone) ;}
4、 Processing parameters
The basic principle of the processing degree of the output parameter format , Servers as public resources , Avoid unnecessary operations , For example, the client can judge whether the return value is empty ,null etc. , Or some common format processing , Use the client to share the server pressure properly .
3、 ... and 、 Business services layer
1、 Business verification
For example, pass in the order number , Through the database layer query , No order data , This is called a business nature exception , There's no problem with the code itself , But business logic doesn't work properly .
public InfoModel detail(Integer id){ BaseInfo baseInfo = baseInfoDao.selectByPrimaryKey(id) ; if .........
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- SQL intercepts the data before and after the '.'
- What is the architecture of a live broadcast system worth more than $1 billion?
- Brief analysis of LinkedList source code
- 分布式文档存储数据库之MongoDB索引管理
- YouTube subscription: solve the problem of incomplete height display of YouTube subscription button in pop-up window
- 树莓派鼓捣记 - 设置 wifi
- Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
- CUDA_寄存器和局部存储器
- CUDA常用概念及注意点
- Prometheus installation configuration
猜你喜欢

C + + game development

How SSL certificate and public IP address affect SEO

JS solves the problem of automatic pagination in browser printing

接缝雕刻算法:一种看似不可能的图像大小调整方法

Ineuos industrial interconnection platform, web configuration (ineuview) increases the function of importing and exporting engineering views, as well as optimization and repair. Release: v3.2.1

Using tail as time series to identify whales

Day85: Luffy: shopping cart switching price according to different validity period & shopping cart deletion operation & price settlement & foreplay of order page

The problem of looting by leetcode

asp.net core中使用Serilog以及自定义Enricher

CUDA_ Memory model
随机推荐
害怕重构?都怪我太晚和你介绍该如何重构,现在我来了
JS solves the problem of automatic pagination in browser printing
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
编码风格:Mvc模式下SSM环境,代码分层管理
一幅图像能顶16x16字!——用于大规模图像缩放识别的变压器(对ICLR 2021年论文的简要回顾)
Formal class D25
CUDA_ Register and local memory
解决Coursera视频无法观看的三种方法(亲测有效)
day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏
js label语法跳出多重循环
Bifrost 位点管理 之 异构中间件实现难点(1)
2020-11-09:谈谈布隆过滤器和布谷鸟过滤器的相同点和不同点?
Error running app:Default Activity not found 解决方法
Functional guide for temporary users and novices of PL / SQL developer
消防知识线上答题活动小程序复盘
Centos7 operating system security hardening series (2)
对于程序员,那些既陌生又熟悉的计算机硬件
CUDA常用概念及注意点
C++ exception implementation mechanism
《Python Cookbook 3rd》笔记(2.1):使用多个界定符分割字符串