Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • 数据结构与算法

  • 算法设计与分析

  • Java

  • Python

  • 设计模式

  • 计算机网络

  • Spring笔记

  • SpringMVC笔记

  • SpringBoot笔记

  • SpringSecurity

  • Elasticsearch笔记

  • RabbitMQ笔记

  • Docker笔记

  • MySQL

  • Redis

  • Mybatis

  • MybatisPlus

    • Mybatis-Plus介绍
    • 快速开始
    • Mybatis + MP
    • Spring + Mybatis + MP
    • SpringBoot + Mybatis + MP
    • BaseMapper
    • 通用 CRUD
    • Service CRUD 接口
      • Service CRUD 接口
        • IService 接口部分方法
        • IService
        • ServiceImpl
      • Reference
  • Nginx

  • Kubernetes笔记

  • Git

  • Software

  • 微服务笔记

  • bug

  • BackEndNotes
  • MybatisPlus
Geeks_Z
2023-02-20
目录

Service CRUD 接口

Service CRUD 接口

说明:

  • 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper 为 条件构造器 (opens new window)

IService (opens new window) 接口部分方法

IService

IService位于 com.baomidou.mybatisplus.extension.service包下的一个接口规范,接口中包含的一系列的dao层交互操作,一般在服务层进行继承操作。

ServiceImpl

ServiceImpl 是IService 的实现类,ServiceImpl有两个泛型 (opens new window)参数,一个参数为BaseMapper 也就是你的实体Mapper ,一个是你的实体类。

MP帮我们去实现了mapper接口,那mapper接口是不是得有Service接口和一个Service实现类啊?所以他其实帮我们连实现类也写好了,我们只需要去实现接口和继承实现类就好了。当然Service接口中我们也可以写自己的自定义方法但是同时我们也需要在ServiceImpl中自己去写我们自定义的方法,而从IService接口中实现的方法呢?ServiceImpl其实已经帮我们实现了,我们只要继承他就可以了。

继承ServiceImpl要放入两个泛型呢,第一个其实是我们之前写的那个UserMapper,为什么要传入这个呢,看下面的图:

image-20230923142300492

可以看到系统提供的这个ServiceImpl类中有一个成员变量,他被@Autowired注解修饰也就是说这个成员变量是自动注入的,可以发现他的名字叫baseMapper,懂了吧,我们那个UserMapper是继承自baseMapper的吧,所以我们把那个接口传进来,其实就是让这个实现类去自动注入我们的那个UserMapper.

第二个泛型是我们的那个model类,也就是User,我们告诉ServiceImpl我们要处理的User类,ServiceImpl再去调用UserMapper告诉Usermapper我要你处理的User,这说明什么呢,Usermapper的泛型和ServiceImpl的泛型要一致哦,不能说我Usermapper处理User类,然后你给ServiceImpl传入一个Student类,那到时候ServiceImpl传一个Student给UserMapper,UserMapper肯定就处理不了。可以看下图:

image-20230923142320875

画红线的地方也看出来, ServiceImpl明确要求你这个泛型M必须继承的是一个泛型为T的BaseMapper,而T就是我们传入的第二个泛型,所以很明显Usermapper的泛型和ServiceImpl传入的第二个泛型是要一致的哦,一定要注意,虽然很基础但是往往也容易出错嘛..

Reference

  • 关于mybatis-plus实现Iservice、ServiceImpl和BaseMaper的一些理解(个人学习用) (opens new window)
上次更新: 2024/03/29, 08:56:31
通用 CRUD
Nginx介绍

← 通用 CRUD Nginx介绍→

最近更新
01
并行训练
03-29
02
tensor维度转换
03-26
03
ResNet源码解读
03-23
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式