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

mybatis-plus的一般实现过程(超详细)

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上提供了许多实用的功能,如分页查询、条件构造器、自动填充等。下面是 MyBatis-Plus 的完整代码实现流程:

①、引入 MyBatis-Plus 依赖
在 Maven 中,可以通过以下方式引入 MyBatis-Plus 依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.1</version>
</dependency>

②、配置 MyBatis-Plus
在 Spring Boot 中,可以通过配置文件 application.propertiesapplication.yml 来配置 MyBatis-Plus。以下是一个简单的配置示例:

mybatis-plus:mapper-locations: classpath:/mapper/*.xmlglobal-config:db-config:id-type: autofield-strategy: not_null

其中,mapper-locations 配置了 MyBatis Mapper 文件的路径,global-config 配置了全局的 MyBatis-Plus 配置。

③、定义实体类
定义实体类时,需要注意以下几点:

实体类需要使用 @TableName 注解指定对应的数据库表名;
实体类需要使用 @TableId 注解指定主键字段;
实体类需要使用 @TableField 注解指定非主键字段。
以下是一个简单的实体类示例:

@Data
@TableName("user")
public class User {@TableId(type = IdType.AUTO)private Long id;@TableField("name")private String name;@TableField("age")private Integer age;@TableField("email")private String email;
}

④、定义 Mapper 接口
Mapper 接口定义了对数据库的操作,其中可以使用 MyBatis-Plus 提供的通用 Mapper 或自定义 SQL 语句。

以下是一个简单的 Mapper 接口示例:

@Mapper
public interface UserMapper extends BaseMapper<User> {// 自定义 SQL 语句 ①、我们可以在XML文件中定义具体语句,但需要注意如果在Xml文件中定义,需要在yml配置文件或者properties配置文件中配置XX.xml文件所在的路径。②、可以直接使用注解)    @Select("SELECT * FROM user WHERE name = #{name}")List<User> selectByName(String name);
}

在配置文件 application.yml 或 application.properties 中,需要配置 Mapper 文件的路径:

mybatis-plus:mapper-locations: classpath:/mapper/*.xml

其中,继承了 BaseMapper<User> 后,就可以使用 MyBatis-Plus 提供的通用 Mapper 方法。同时,也可以定义自定义 SQL 语句。

使用 Service 层
Service 层是业务逻辑层,通常用于封装业务逻辑和操作数据库的代码。在使用 MyBatis-Plus 时,可以使用其提供的 Service 层,也可以自定义 Service 层。

以下是一个简单的 Service 层示例:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic List<User> getUserByName(String name) {return baseMapper.selectByName(name);}
}

其中,继承了 ServiceImpl<UserMapper, User> 后,就可以使用 MyBatis-Plus 提供的 Service 方法。同时,也可以定义自定义 Service 方法。

需要注意的是我们的@service注解是写在我们XxxServiceIml上的。而我们的Xxxservice类是不需要使用注解的。平常直接使用XxxServiceimpl.方法就行。

相关文章:

mybatis-plus的一般实现过程(超详细)

MyBatis-Plus 是 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上提供了许多实用的功能&#xff0c;如分页查询、条件构造器、自动填充等。下面是 MyBatis-Plus 的完整代码实现流程&#xff1a; ①、引入 MyBatis-Plus 依赖 在 Maven 中&#xff0c;可以通过以下方式引入 …...

Spark(5):RDD概述

目录 0. 相关文章链接 1. 什么是RDD 2. RDD核心属性 3. 执行原理 0. 相关文章链接 Spark文章汇总 1. 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是 Spark 中最基本的数据处理模型。代码中是一个抽象类&#x…...

面向对象 - 继承

Hello , 各位同学朋友大家好啊, 今天给大家分享的技术呢, 是面向对象三大特征之一的继承&#xff0c;我们今天主要按照以下几个点, 展开继承的讲解。目录 :* 继承的介绍* 继承的好处和弊端* 继承中成员访问特点 - 成员变量* 继承中成员访问特点 - 成员方法* 方法重写* 继承中成…...

计算机网络的166个概念你知道几个 第十二部分

计算机网络安全安全通信的四大要素&#xff1a;机密性、保温完整性、端点鉴别和运行安全性。机密性&#xff1a;报文需要在一定程度上进行加密&#xff0c;用来防止窃听者截取报文。报文完整性&#xff1a;在报文传输过程中&#xff0c;需要确保报文的内容不会发生改变。端点鉴…...

【RabbitMQ】RabbitMQ各版本的兼容性与技术支持时限

今天在研究RabbitMQ的监控时&#xff0c;发现这个消息队列软件的版本真的很令人崩溃&#xff0c;版本众多&#xff0c;且组件之间还存在版本的兼容性&#xff0c;此外各个组件还对操作系统存在兼容性关系。为了帮大家节省一些查阅官方文档的时间&#xff0c;我把官方文档里面涉…...

【Git】P5 Git 远程仓库(3)pull 发生冲突

pull 发生冲突冲突在什么场景下发生&#xff1f;为什么要先 pull 再 push构建一个冲突场景初始开始操作&#xff1a;程序员2&#xff1a;程序员1&#xff1a;程序员2&#xff1a;发生冲突&#xff1a;查看冲突&#xff1a;解决冲突&#xff1a;冲突在什么场景下发生&#xff1f…...

关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解

关于世界坐标系&#xff0c;相机坐标系&#xff0c;图像坐标系&#xff0c;像素坐标系的一些理解前言一、各坐标系的含义二、坐标系转换1.世界坐标系与相机坐标系&#xff08;旋转与平移&#xff09;2.相机坐标系与图像坐标系&#xff08;透视&#xff09;3.图像坐标系与像素坐…...

企业防护ddos的注意事项,你知道吗?

DDoS&#xff0c;分布式拒绝服务攻击&#xff0c;是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。在当下&#xff0c;DDoS 攻击是非常常见的一种攻击方式&#xff0c;大…...

RocketMQ如何测试

RocketMQ如何测试MQ简介RocketMQRocketMQ测试点MQ简介 MQ&#xff1a;Message Queue&#xff0c;即消息队列&#xff0c;是一种应用程序之间的消息通信&#xff0c;简单理解就是A服务不断的往队列里发布信息&#xff0c;另一服务B从队列中读取消息并执行处理&#xff0c;消息发…...

SpringBoot中的bean注入方式和原理介绍

Spring Boot是一个非常流行的Java框架&#xff0c;它可以帮助开发者快速地构建高效、健壮的应用程序。其中一个重要的功能就是依赖注入&#xff0c;也就是将一个对象注入到另一个对象中&#xff0c;以便它们可以相互协作。在Spring Boot中&#xff0c;依赖注入是通过bean实现的…...

ESP32设备驱动-RFID-RC522模块驱动

RFID-RC522模块驱动 文章目录 RFID-RC522模块驱动1、RFID-RC522介绍2、硬件准备3、软件准备4、驱动实现1、RFID-RC522介绍 基于 NXP 的 MFRC522 IC 的 RC522 RFID 模块通常带有一个 RFID 卡标签和具有 1KB 内存的密钥卡标签。 最重要的是,它可以写一个标签,这样你就可以在里…...

SMETA认证有些客户是需要做窗口期的

【SMETA认证有些客户是需要做窗口期的】SMETA审核是常见的社会责任审核标准之一&#xff0c;中文全称为“Sedex 会员道德贸易审核”&#xff0c;英文为“Sedex Members Ethical Trade Audit”. SEDEX 官网&#xff1a;网页链接Sedex 作为目前市场流行的CSR审核标准&#xff0c;…...

面向对象设计模式:创建型模式之原型模式

文章目录一、引入二、代理模式&#xff0c;Prototype Pattern2.1 Intent 意图2.2 Applicability 适用性2.3 类图2.4 应用实例&#xff1a;使用下划线或消息框展示字符串2.4 应用实例&#xff1a;JDK java.lang.Object java.lang.Cloneable一、引入 二、代理模式&#xff0c;Pr…...

三维重建(单目、双目、多目、点云、SFM、SLAM)

1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定2 单目三维重建2.1 NeuralRecon三维重建定义 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而…...

Java中的final和权限修饰符

目录 final 常量 细节&#xff1a; 权限修饰符 Java权限修饰符用于控制类、方法、变量的访问范围。Java中有四种权限修饰符&#xff1a; 权限修饰符的使用场景&#xff1a; final 方法 表明该方法是最终方法&#xff0c;不能被重写。类 表明该类是最终类&#xff0c;不能被继…...

MySQL的基本语句(SELECT型)

基本MySQL语句SELECTSELECT FROM 列的别名去除重复行空值着重号算术运算符加法( )减法( - )乘法( * )除法&#xff08; / 或DIV)求模&#xff08; % 或MOD)比较运算符等于&#xff08; &#xff09;安全等于&#xff08; <> &#xff09;不等于&#xff08; ! 或 <…...

日志服务搭建-ES-FileBeat-Kibana

1次订单量突增问题&#xff0c;导致了有几个数据没有录库&#xff0c;但是确有支付的记录&#xff0c;啥玩意&#xff0c;还能有这个操作&#xff0c;组内安排问题定位&#xff0c;解决&#xff0c;一看打出来的日志&#xff0c;只有支付有&#xff0c;生成订单这边没有&#x…...

大数据架构设计与数据计算流程

大数据架构设计Hadoop有3个核心组件&#xff1a;分布式文件系统HDFS&#xff1b;分布式运算编程框架MapReduce&#xff1b;分布式资源调度平台YARN。HBase&#xff0c;Hadoop dataBase&#xff0c;基于HDFS的NoSQL数据库&#xff0c;面向列式的内存存储&#xff0c;定期将内存数…...

207. 课程表

207. 课程表https://leetcode.cn/problems/course-schedule/ 难度中等1526 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [a…...

2023-03-08 mysql列存储数据库-查询执行过程分析

摘要: 在mysql的sql层和存储引擎的交互模式中, 存储引擎实现handler接口, 由SQL层负责调用接口, 所以执行的过程可以看作是在sql层中, innodb仅提供接口。 但是在mysql列存储引擎中, TMD直接替换掉了sql层的执行接口,并且将sql层的查询树转换成了自己的一套查询树, 然后根据…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...