最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀controller層,service層,mapper層,entity層的作用與聯(lián)系

 更新時間:2023年11月03日 09:47:30   作者:要努力變強(qiáng)-  
這篇文章主要介紹了關(guān)于controller層,service層,mapper層,entity層的作用與聯(lián)系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

controller層,service層,mapper層,entity層作用與聯(lián)系

1.controller層

controller層是用來接受前臺數(shù)據(jù)和返回頁面請求信息的,

Controller層是不允許直接操作數(shù)據(jù)庫的!它就像一個服務(wù)員,哪桌客人需要點(diǎn)菜了,就喊一聲服務(wù)員!

對應(yīng)的,外界需要完成什么樣的業(yè)務(wù),就通過Controller去調(diào)用不同的Service,需要記住的是Controller只是一個中間者或者轉(zhuǎn)發(fā)者,不應(yīng)該在Controller里暴露Service的業(yè)務(wù)邏輯,而應(yīng)該直接轉(zhuǎn)發(fā)Service的業(yè)務(wù)處理結(jié)果!

控制層,負(fù)責(zé)具體模塊的業(yè)務(wù)流程控制,需要調(diào)用service邏輯設(shè)計(jì)層的接口來控制業(yè)務(wù)流程。

controller通過接收前端H5或者App傳過來的參數(shù)進(jìn)行業(yè)務(wù)操作,再將處理結(jié)果返回到前端。

@RestController
@RequestMapping("/user")
public class UserController {
 
    @Autowired
    private UserMapper userMapper;
    
    @GetMapping("/select")
    public List<User> index(){
        List<User> all = userMapper.findAll();
        return all;
    }
 
    @Autowired
    private UserService userService;
    @PostMapping("/insert")
    public boolean save(@RequestBody User user){
        return userService.saveUser(user);
    }
 
    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable Integer id){
        return userMapper.deleteById(id);
    }

2.servie層

service層接受controller層信息,用于業(yè)務(wù)處理和邏輯判斷。Service 用于處理業(yè)務(wù)邏輯,會調(diào)用mapper層的API;

Service層是業(yè)務(wù)邏輯層,在該層進(jìn)行復(fù)雜的業(yè)務(wù)邏輯處理,對在多個mapper層查到的數(shù)據(jù)進(jìn)行組裝、處理,然后將結(jié)果返回給Controller,因此,一般情況下,一個Controller中可能包括多個Service,而一個Service中又或許包含多個mapper。

(舉例)controller層是飯店經(jīng)理,service是服務(wù)員,mapper層是廚房倉庫。

業(yè)務(wù)service層,給controller層的類提供接口進(jìn)行調(diào)用。一般就是自己寫的方法封裝起來,就是聲明一下,具體實(shí)現(xiàn)在serviceImpl中。

public class UserService extends ServiceImpl<UserMapper, User> {
        public boolean saveUser(User user) {
            if(user.getId() == null){
            return save(user);//mybatis-plus提供的方法,表示插入數(shù)據(jù)。
            }else{
            return updateById(user);
        }
}

3.mapper層

mapper層(數(shù)據(jù)持久化層,專門用來跟數(shù)據(jù)庫打交道的)。

mapper層用于和數(shù)據(jù)庫交互,想要訪問數(shù)據(jù)庫并且操作,只能通過mapper層向數(shù)據(jù)庫發(fā)送sql語句,將這些結(jié)果通過接口傳給service層,對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)持久化操作,他的方法語句是直接針對數(shù)據(jù)庫操作的,

主要實(shí)現(xiàn)一些增刪改查操作,在mybatis中方法主要與與xxx.xml內(nèi)相互一一映射。

@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {//數(shù)據(jù)庫查詢接口,專門用來跟數(shù)據(jù)庫交互用的
    @Select("SELECT * from sys_user")
    public List<User> findAll();
 
    List<User> findAll1();
    @Insert("INSERT into sys_user(username,password,nickname,email,phone,address)VALUES(#{username},#{password},#{nickname}," +
            "#{email},#{phone},#{address});")
    public int insert(User user);
 
    public int updateUser(User user);
 
    @Delete("delete from sys_user where id = #{id}")
    public Integer deleteById(@Param("id") Integer id);

4.entity層

entity層創(chuàng)建實(shí)體類,和數(shù)據(jù)庫表里面屬性值一一對應(yīng)。

實(shí)體層,用于存放我們的實(shí)體類,與數(shù)據(jù)庫中的屬性值基本保持一致,實(shí)現(xiàn)set和get的方法或者使用注解的方式。

@Data//Data注解代替了get和set方法
@TableName(value = "sys_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    private String nickname;
    private String email;
    private String phone;
    private String address;
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 超詳細(xì)講解Java異常

    超詳細(xì)講解Java異常

    Java 異常機(jī)制可以使程序中異常處理代碼和正常業(yè)務(wù)代碼分離,保證程序代碼更加優(yōu)雅,并提高程序健壯性。本文超詳細(xì)講解了Java異常,感興趣的小伙伴可以參考一下這篇文章
    2021-09-09
  • Mybatis中的緩存機(jī)制解析

    Mybatis中的緩存機(jī)制解析

    這篇文章給大家介紹mybatis中的緩存機(jī)制,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Spring Boot 部署過程解析(jar or war)

    Spring Boot 部署過程解析(jar or war)

    這篇文章主要介紹了Spring Boot 部署過程解析(jar or war),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 為spring get請求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰)

    為spring get請求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰)

    這篇文章主要介紹了為spring get請求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java 基于AQS實(shí)現(xiàn)自定義同步器的示例

    Java 基于AQS實(shí)現(xiàn)自定義同步器的示例

    這篇文章主要介紹了Java 基于AQS實(shí)現(xiàn)自定義同步器的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • java小程序火鍋店點(diǎn)餐系統(tǒng)

    java小程序火鍋店點(diǎn)餐系統(tǒng)

    這篇文章主要介紹了java小程序火鍋店點(diǎn)餐系統(tǒng),采用Java語言和Vue技術(shù),以小程序模式實(shí)現(xiàn)的火鍋點(diǎn)菜系統(tǒng),文中提供了解決思路和部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-03-03
  • 基于接口實(shí)現(xiàn)java動態(tài)代理示例

    基于接口實(shí)現(xiàn)java動態(tài)代理示例

    這篇文章主要介紹了基于接口實(shí)現(xiàn)java動態(tài)代理示例,需要的朋友可以參考下
    2014-04-04
  • 深入探索Java常量池

    深入探索Java常量池

    這篇文章主要介紹了深入探索Java常量池,涉及靜態(tài)常量池和運(yùn)行時常量池的介紹,常量池的好處,8種基本數(shù)據(jù)類型的包裝類和常量池等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java并發(fā)編程Lock?Condition和ReentrantLock基本原理

    Java并發(fā)編程Lock?Condition和ReentrantLock基本原理

    這篇文章主要介紹了Java并發(fā)編程Lock?Condition和ReentrantLock基本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java可變參數(shù)的應(yīng)用小結(jié)

    Java可變參數(shù)的應(yīng)用小結(jié)

    這篇文章主要介紹了Java可變參數(shù)的應(yīng)用小結(jié),實(shí)現(xiàn)同一個函數(shù)名,不同參數(shù)個數(shù),實(shí)現(xiàn)的方法相同,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10

最新評論

彭泽县| 万全县| 旬阳县| 普格县| 葵青区| 前郭尔| 舟山市| 通化市| 宁城县| 太白县| 水城县| 瓦房店市| 应城市| 兰西县| 锡林浩特市| 连山| 梁平县| 保德县| 雅江县| 阿鲁科尔沁旗| 同仁县| 邻水| 白山市| 尼木县| 丰县| 绵阳市| 嵊州市| 东安县| 张家口市| 唐河县| 维西| 福建省| 甘洛县| 沙湾县| 葵青区| 台东市| 克山县| 长宁县| 防城港市| 富平县| 佛学|