wordpress 别名排序/晋中网站seo
学习教程
黑马程序员最新MybatisPlus全套视频教程,4小时快速精通mybatis-plus框架
Service接口
简介
在MyBatis-Plus
框架中,Service
接口的作用是为实体类提供一系列的通用CRUD
(增删改查)操作方法。通常情况下,Service
接口中的方法会对应数据库表中的操作,例如插入一条数据、根据主键查询数据、更新数据等。
Service
接口与继承BaseMapper
的区别在于,Service
接口封装了一些常用的数据库操作方法,使得开发者可以直接调用这些方法,而不需要自己手动编写SQL语句和操作数据库。这样可以减少开发者的工作量,并提高开发效率。
另外,Service
接口还可以定义一些业务相关的方法,例如根据条件查询数据、批量插入数据等。这些方法可以根据具体的业务需求来定义,提供了更加灵活的操作方式。
而继承BaseMapper
接口,则是为了实现自定义的数据库操作方法。通过继承BaseMapper
接口,可以使用MyBatis-Plus
提供的一系列的数据库操作方法,例如插入、更新、删除等。这样可以方便地使用MyBatis-Plus的功能,并减少手动编写SQL语句的工作量。
总之,Service
接口和继承BaseMapper
接口都是为了简化数据库操作的方式,提高开发效率,并提供了一些常用的数据库操作方法。具体使用哪种方式,可以根据具体的业务需求和开发习惯来选择。
基本步骤
1、需要有一个自己的Service
接口,这个接口要继承
UserService
// 自定义的接口,继承mybatis-plus中的IService接口
public interface UserService extends IService<User> {
}
2、对自己的Service
接口进行继承并实现
UserServiceImpl
// 1、继承mybatis-plus提供的Service实现类,指定对应的mapper接口和实体类
// 2、继承自定义的UserService接口
// 3、添加上@Service注解@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
3、使用mybatis-plus
实现好的方法进行查询
UserController
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/userlist")@ResponseBodypublic List<User> selectAllUser() {// 查询所有用户,调用mybatis-plus实现的方法List<User> users = userService.list();return users;}
}
文件梳理
现有文件如下
UserController
定义前端访问的接口,后端调用UserServiceImpl
中的方法来处理数据库数据
User
实体类,与数据库表对应
UserMapper
定义操作sql的方法,主要是特殊需要写sql的方法,普通操作数据库可以通过mybatis-plus
提供的方法实现
UserServiceImpl
UserService
的实现类,编写主要的业务逻辑。
UserService
定义提供哪些操作方法。UserService
类似饭店,提供了菜单列表,而UserServiceImpl
就是具体做菜的厨师。
UserMapper.xml
编写具体的sql语句
现在假设mybatis-plus
没有提供查询名称为李四的用户,这时可以通过编写sql实现。
UserController
public List<User> selectAllUser() {// 查询名称为李四的用户List<User> users = userService.getLisi();return users;}
UserService
public interface UserService extends IService<User> {// 获取李四List<User> getLisi();
}
UserServiceImpl
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic List<User> getLisi() {// 调用baseMapper定义的操作sql的方法// 这里不需要使用userMapper,因为ServiceImpl里有baseMapper,baseMapper实际上就是UserMapperList<User> userList = baseMapper.getLisi();return userList;}
}
在UserServiceImpl
中也可以直接调用ServiceImpl
提供的方法
UserMapper
@Mapper
public interface UserMapper extends BaseMapper<User> {List<User> getLisi();
}
UserMapper.xml
<select id="getLisi" resultType="org.example.springboot.entity.User">select * from user where name = '李四'</select>
这个流程感觉怪怪的,但是好像就是这样写,具体为啥不清楚,比较刚开始学习
ServiceImpl常用方法
mybatis-plus
在ServiceImpl
实现了很多方法。
一般查询单挑数据的方法是get
开头、多条数据是list
开头;
删除方法是remove
开头;
新增方法是save
开头;
更新方法是update
开头;
对于mybatis-plus
没有提供的,可以通过自定义mapper
接口,执行sql
语句来实现。
Lambda
在使用BaseMapper
我们可以使用提供好的Lambda
表达式。当我们使用Service
时也可以使用Lambda
表达式。
UserController
public List<User> selectAllUser() {// 使用Lambda表达式查询所有年龄大于30的男生int age = 30;int sex = 1;List<User> users = userService.getAllBoy(age,sex);return users;
}
UserService
// 查询男生List<User> getAllBoy(@Param("age") Integer age, @Param("sex") Integer sex);
UserServiceImpl
// 查询男生@Overridepublic List<User> getAllBoy(@Param("age") Integer age, @Param("sex") Integer sex) {// 这里不需要使用if判断值是否存在,而是使用lambdaQuery处理List<User> userList = lambdaQuery().gt(age != null, User::getAge, age) // 年龄存在时条件生效.eq(sex != null, User::getSex, sex) // 性别存在时条件生效.list(); // 返回一个集合return userList;}
代码生成
在上面的内容中,我们需要写很多文件、代码。但是这些代码很多内容都是相同的,这里我们可以使用第三方插件来为我们生成这些固定的内容。
视频教程:代码生成器
插件是mybatisplus
下载完成后需要配置数据库,因为该插件是基于数据库的表来生成代码的。不同版本的IDEA,设置的位置可能不一样。我的版本是IntelliJ IDEA 2023.3.2
。这一步可能可以省略,如果不行的话,在进行配置
我本地使用的是mysql
,以mysql
为例
数据库配置好后,可以看到自己的数据库
这里也要配置一下,配置完成后可以测试是否连接成功
dbUrl
格式如下:jdbc:mysql://localhost:3306/your_database?serverTimezone=Asia/Shanghai
把your_database
替换为你自己数据库的名称
配置代码生成,找到code generator 按钮。我的在 tools 里
稍微有点问题,路径分隔符不对
修改一下路径,/
修改为.
第一次生成之后,最好检查一下生成的文件是否有什么问题。这样方便后续修改其配置。我这里出现的问题就是包地址填写的有问题。
相关文章:

MyBatisPlus学习三:Service接口、代码生成器
学习教程 黑马程序员最新MybatisPlus全套视频教程,4小时快速精通mybatis-plus框架 Service接口 简介 在MyBatis-Plus框架中,Service接口的作用是为实体类提供一系列的通用CRUD(增删改查)操作方法。通常情况下,Servi…...

产品经理如何选择城市?
年底,全国性的人口大迁徙即将开始。选择城市,堪称年轻人的“二次投胎”,族望留原籍,家贫走他乡。 古人在选择城市时,主要的考量因素是家族势力,这一点放在当代,大致也成立,如果在老…...

再谈“敏捷”与“瀑布”在产品开发过程中的反思
作为一家专注于软件开发的公司《智创有术》,我们致力于为客户提供创新、高效和可靠的解决方案。通过多年的经验和专业知识,我们已经在行业内建立了良好的声誉,并赢得了客户的信任和支持。 支持各种源码,网站搭建,APP&a…...

设计模式② :交给子类
文章目录 一、前言二、Template Method 模式1. 介绍2. 应用3. 总结 三、Factory Method 模式1. 介绍2. 应用3. 总结 参考内容 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书&qu…...

Hive 源码
hive 编译 issue Failed to execute goal com.github.os72:protoc-jar-maven-plugin:3.5.1.1:run (default) on project hive-standalone-metastore: Error resolving artifact: com.google.protobuf:protoc:2.5.0: The following artifacts could not be resolved: com.goog…...

调整几行代码,接口吞吐提升 10 倍,性能调优妙啊!
景 分析过程 总结 背景 公司的一个ToB系统,因为客户使用的也不多,没啥并发要求,就一直没有经过压测。这两天来了一个“大客户”,对并发量提出了要求:核心接口与几个重点使用场景单节点吞吐量要满足最低500/s的要求。 当时一想,500/s吞吐量还不简单。Tomcat按照100个线程…...

MACOS Atrust服务异常
MAC版Atrust服务异常 点击进入办公后出现提示其一: 核心服务未启动,部分功能存在异常,确定重新启动吗? 可能的原因: 1.上次已完全退出客户端 2.核心服务被其他程序优化禁用 点击重新启动后,出现提示&#x…...

LLM大语言模型(四):在ChatGLM3-6B中使用langchain
目录 背景准备工作工具添加LangChain 已实现工具Calculator、Weather Tool配置 自定义工具自定义kuakuawo Agent 多工具使用参考 背景 LangChain是一个用于开发由语言模型驱动的应用程序的框架。它使应用程序能够: 具有上下文意识:将语言模型与上下文源(提示指令&…...

Dubbo入门介绍和实战
1. 引言 Dubbo是一款开源的高性能、轻量级的Java RPC(远程过程调用)框架,旨在解决分布式服务之间的通信问题。本文将介绍Dubbo的基础概念、核心特性以及使用场景,包括实际示例演示。 2. 什么是Dubbo? Dubbo是阿里巴…...

如何实现无人机识别功能
无人机识别算法可以基于不同的传感器和技术,结合多种方法进行实现。以下是一些常见的无人机识别算法和技术: 视觉识别: 图像处理: 使用计算机视觉技术对无人机图像进行处理,包括特征提取、目标检测和跟踪等。深度学习&…...

Python学习笔记(四)流程控制方法
流程控制有三种方法:分支、循环、跳出 流程的控制通过布尔值来实现,分支和循环都需要对一定的条件进行判断,根据判断结果(布尔值)决定下一步要做什么 布尔值通过比较运算符、逻辑运算符来进行判断是True还是False 不…...

【Qt- C++ Qml 交互】
Qt编程指南 VX:hao541022348 ■ 将C对象注册到 QML中,在QML使用C对象■ C对象注册到元对象系统■ Q_INVOKABLE 宏定义是将C 的 函数(方法)声明为元对象系统可调用的函数■ 演示步骤 ■ 将 C类注册到 QML,并在QML声明一…...

ubuntu 20.04 自由切换 python 的版本
问题描述 当前 ubuntu 20.04 默认安装了多个 python 的版本,执行 python 时,默认版本是 Python 2.7.18 zhangszzhangsz:~$ python Python 2.7.18 (default, Jul 1 2022, 12:27:04) [GCC 9.4.0] on linux2 Type "help", "copyright&quo…...

程序性能优化全能手册
本文聊一个程序员都会关注的问题:性能。 当大家谈到“性能”时,你首先想到的会是什么? 是每次请求需要多长时间才能返回? 是每秒钟能够处理多少次请求? 还是程序的CPU和内存使用率高不高? 这些问题基本上…...

LiveSIPB流媒体国网B接口功能-国网B接口服务安装使用说明
LiveSIPB 国网B接口服务安装使用说明 1、服务说明1.1、安装包说明1.2、国网B接口信令服务1.3、国网B接口流媒体服务1.4、配置信令服务(LiveCMS)1.5、配置流媒体服务(LiveSMS) 2、服务运行2.1、Windows2.2、Linux 3、配置设备接入3.1、海康STATE_GRID接入示例 4、平台使用4.1、管…...

利用小红书笔记详情API:为内容运营提供强大的支持
利用小红书笔记详情API,内容运营者可以获得对小红书平台上的笔记内容的深入洞察,从而为其运营工作提供强大的支持。以下是该API如何支持内容运营的几个关键方面: 获取笔记内容与数据: API允许内容运营者直接获取小红书平台上的笔记…...

地理空间分析1——入门Python地理空间分析
写在开头 地理空间分析是一门涉及地球表面数据处理和解释的科学,通过对地理现象的研究,我们可以更深入地了解地球各个角落的关系。Python作为一种功能强大的编程语言,在地理空间分析领域展现了强大的潜力。本文将带您深入了解入门级别的Pyth…...

哈尔滨爆火的背后有什么值得我们学习的,2024普通人如何创业/2024风口行业
这个冬天,“南方小土豆”带火东北冰雪游。“冰城”黑龙江哈尔滨的文旅市场异常火爆,元旦假期3天,哈尔滨市累计接待游客304.79万人次,实现旅游总收入59.14亿元。旅游总收入达到历史峰值。哈尔滨旅游怎么就爆火了?背后究…...

element中Tree 树形控件实现多选、展开折叠、全选全不选、父子联动、默认展开、默认选中、默认禁用、自定义节点内容、可拖拽节点、手风琴模式
目录 1.代码实现2. 效果图3. 使用到的部分属性说明4. 更多属性配置查看element官网 1.代码实现 <template><div class"TreePage"><el-checkboxv-model"menuExpand"change"handleCheckedTreeExpand($event, menu)">展开/折叠&l…...

数据结构OJ实验15-插入排序与交换排序
A. DS内排—直插排序 题目描述 给定一组数据,使用直插排序完成数据的升序排序。 --程序要求-- 若使用C只能include一个头文件iostream;若使用C语言只能include一个头文件stdio 程序中若include多过一个头文件,不看代码,作0分…...

鹿目标检测数据集VOC格式500张
鹿,一种优雅而神秘的哺乳动物,以其优美的外形和独特的生态习性而备受人们的喜爱。 鹿的体型通常中等,四肢细长,身体线条流畅。它们的头部较小,耳朵大而直立,眼睛明亮有神。鹿的毛色因品种而异,…...

静态网页设计——电影推荐网(HTML+CSS+JavaScript)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1NK411x7oK/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术:HTMLCSSJS(…...

ARM CCA机密计算架构软件栈简介
本博客描述了Arm机密计算架构(Arm CCA)的固件和软件组件。 在这篇博客中,您将学到如何: 列出组成Arm CCA软件栈的组件集了解Arm CCA引入新软件组件的原因了解监视器和领域管理监视器(RMM)的角色了解如何创建和管理领域1.1 开始之前 我们假设您熟悉AArch64异常模型、AAr…...

C#编程-使用集合
使用集合 您学习了如何使用数组来有效地存储和操作相似类型额数据。但是,以下限制于数组的使用相关联: 您必须在声明时定义数组的大小。您必须编写代码以对数组执行标准操作,如排序。让我们思考一个示例。假设您想要存储在组织工作的五个雇员的姓名。您可以使用以下语句来声…...

linux 设备模型之设备
在最低层, Linux 系统中的每个设备由一个 struct device 代表: struct device { struct device *parent; struct kobject kobj; char bus_id[BUS_ID_SIZE]; struct bus_type *bus; struct device_driver *driver; void *driver_data; void (*release)(struct device *dev); /* …...

电源滤波可采用 RC、LC、π 型滤波。电源滤波建议优选磁珠,然后才是电感。同时电阻、电感和磁珠必须考虑其电阻产生的压降。
电源滤波是为了减少电源中的噪声和干扰,确保电子设备正常工作。RC、LC、π 型滤波是常用的电源滤波器结构,其选择主要取决于需要滤波的频率范围和所需的滤波效果。 RC滤波器是由电阻和电容组成,适用于高频噪声的滤波。当电流通过电容时,电容会阻止高频噪声信号的通过,起到…...

STM32通用定时器-输入捕获-脉冲计数
一、知识点 编码器 两相编码器(正交编码器):两相编码器由 A 相和 B 相组成,相位差为 90 度。当旋转方向为顺时针时,A 相先变化,然后 B 相变化;当旋转方向为逆时针时,B 相先变化…...

Flutter GetX 之 路由管理
路由管理是插件GetX常用功能之一,为什么说之一呢?因为GetX的功能远不止路由管理这么简单。 GetX的重要功能如下: 1、路由管理2、状态管理3、国际化4、主题5、GetUtil工具6、dialog 弹框7、snackbar 其实上面功能介绍的还是不够详细ÿ…...

基于单片机的农田灌溉系统(论文+源码)
1.系统设计 本系统主要实现如下目标: 1.可以实时监测土壤湿度; 2.土壤湿度太低时,进行浇水操作; 3.可以按键设置湿度的触发阈值; 4. 可以实现远程操控 5.可以实现手…...

分布式缓存 -- 基础
负载均衡 Ribbon 服务间通信的负载均衡工具,提供完善的超时重试机制 客户端的负载均衡器:在客户端将各个服务的信息拿到,在客户端本地做到请求的均衡分配 Ribbon 提供 LoadBalanced 注解,外搭配RestTemplate来做客户端的负载均衡…...