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

Spring Boot3.4.1 集成 mybatis plus

Spring Boot 集成 mybatis plus

第一步 引入依赖
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version>
</dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.10.1</version>
</dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-jsqlparser</artifactId><version>3.5.10.1</version>
</dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.15</version>
</dependency>
第二步 引入配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456
mybatis-plus:mapper-locations: classpath:/mapper/*Mapper.xmlglobal-config:banner: falsedb-config:id-type: ASSIGN_IDconfiguration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplcall-setters-on-nulls: true
第三步 引入配置类
@Configuration
@MapperScan("com.demo.Mapper")
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 配置分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 增加@Version乐观锁支持interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}
第四步 代码编写

实体类

@TableName("t_emp")
public class Emp {@TableId(value = "emp_id")private int empId; // 注意:在Java中通常使用驼峰命名法,因此emp_id变为empId@TableField(value = "emp_name" , exist = true)private String empName;private Integer age;private Character sex;private String email;// 无参构造函数public Emp() {}// 全部参数的构造函数public Emp(int empId, String empName, Integer age, Character sex, String email) {this.empId = empId;this.empName = empName;this.age = age;this.sex = sex;this.email = email;}// Getter和Setter方法public int getEmpId() {return empId;}public void setEmpId(int empId) {this.empId = empId;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Character getSex() {return sex;}public void setSex(Character sex) {this.sex = sex;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {String ret = "Emp{" +"empId=" + empId +", empName='" + empName + '\'' +", age=" + age +", sex='" + sex + '\'' +", email='" + email + '\'' +'}';return ret;}
}

编写mapper接口

@Mapper
public interface EmpMapper extends BaseMapper<Emp> {Emp selectEmpById(int empId);List<Emp> selectAllEmp(@RequestParam("dto") Emp emp);@Select("SELECT * FROM  t_emp WHERE 1=1")IPage<Emp> selectEmpPage(IPage<Emp> page);@Select("SELECT * FROM  t_emp WHERE 1=1")List<Emp> selectEmpList(IPage<Emp> page);}

编写mapper的sql映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.mapper.EmpMapper"><select id="selectEmpById" resultType="com.demo.entity.Emp">select * from t_emp where emp_id = #{empId}</select><select id="selectAllEmp" resultType="com.demo.entity.Emp">select * from t_emp</select>
</mapper>

编写service类

@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {private static Logger logger = LoggerFactory.getLogger(EmpServiceImpl.class);public Emp selectEmpById(int empId) {return baseMapper.selectEmpById(empId);}public List<Emp> selectAllEmp(Emp emp) {return baseMapper.selectAllEmp(emp);}public int insertEmp(Emp emp) {return baseMapper.insert(emp);}public Page<Emp> selectEmpPage(Page<Emp> page) {LambdaQueryWrapper <Emp> wrapper = new LambdaQueryWrapper<>();return baseMapper.selectPage(page,wrapper);}@Overridepublic void updateEmp(Emp emp) {baseMapper.updateById(emp);}@Overridepublic void deleteEmp(int empId) {baseMapper.deleteById(empId);}
}
public interface EmpService {Emp selectEmpById(int empId);List<Emp> selectAllEmp(Emp emp);int insertEmp(Emp emp);Page<Emp> selectEmpPage(Page<Emp> page);void updateEmp(Emp emp);void deleteEmp(int empId);
}
第五步 测试
@RestController
@RequestMapping("test")
public class TestController {@Autowiredprivate RedisUtils redisUtils;@Autowiredprivate EmpService empService;@RequestMapping("/hello")public String hello() {redisUtils.set("test1","hello world");System.out.println(redisUtils.get("test1"));List<Emp> emps = empService.selectAllEmp(null);System.out.println(emps);return "hello";}
}

相关文章:

Spring Boot3.4.1 集成 mybatis plus

Spring Boot 集成 mybatis plus 第一步 引入依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version> </dependency><dependency><groupId>com.bao…...

Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)

Ubuntu 22.04 上安装 PostgreSQL&#xff08;使用官方 APT 源&#xff09; 步骤 1&#xff1a;更新系统 sudo apt update sudo apt upgrade -y步骤 2&#xff1a;添加 PostgreSQL 官方仓库 # 安装仓库管理工具 sudo apt install wget ca-certificates gnupg lsb-release -y#…...

Linux随记(十八)

一、k8s的node节点磁盘 /data已使用率超过 85% , 出现disk pressure &#xff0c;驱逐pod现象 evicted &#xff0c; the node had condition:[DiskPressure] #修改/var/lib/kubelet/config.yaml ]# cat /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1…...

Windows MongoDB C++驱动安装

MongoDB驱动下载 MongoDB 官网MongoDB C驱动程序入门MongoDB C驱动程序入门 安装环境 安装CMAKE安装Visual Studio 编译MongoDB C驱动 C驱动依赖C驱动&#xff0c;需要先编译C驱动 下载MongoDB C驱动源码 打开CMAKE(cmake-gui) 选择源码及输出路径,然后点击configure …...

MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)

产品简述 MS1023 串化器和 MS1224 解串器是一对 10bit 并串 / 串并转 换芯片&#xff0c;用于在 LVDS 差分底板上传输和接收 10MHz 至 80MHz 的并行字速率的串行数据。起始 / 停止位加载后&#xff0c;转换为负载编 码输出&#xff0c;串行数据速率介于 120Mbps…...

ESOP股权管理平台完整解决方案

——全生命周期合规化、智能化、价值化的资本中枢系统 一、平台顶层架构 1.1 四层驱动模型 #mermaid-svg-QrD0g5nIuRtsMl7c {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QrD0g5nIuRtsMl7c .error-icon{fill:#552…...

线性调频波形测距测速信号处理——全代码+注释

clear all close all clc %% 参数设置 fs600e6;%采样率 fc10.45e9;% 波形发射载频 t10e-6;%脉宽 f050e6;%波形中频频率 B10e6;%带宽 uB/(2*t);%调频斜率 Tv100e-6;% 脉冲重复周期 Num64;% 测速脉冲数 lamdfs/B;% 抽取带宽 Nsround(fs*t); NTvround(fs*Tv); tt0:1/fs:t-1/fs; ff…...

WPS word 已有多级列表序号

wps的word中&#xff0c;原来已生成的文档里&#xff0c;已存在序号。比如&#xff0c;存在2、2.1、2.1.1、2.1.1.1、2.1.1.1.1 5层序号&#xff0c;而且已分为5级。但增加内容的时候&#xff0c;并不会自动增加序号&#xff0c;应该如何解决&#xff1f; 原来长这样&#xff…...

Vue 3 源码层核心原理剖析(完整详解版)

一、Compiler 编译过程解密&#xff1a;多框架实现对比 Vue 3 编译流程深度解析&#xff08;基于 /packages/compiler-core/src/parse.ts&#xff09; 完整编译链条及技术实现&#xff1a; #mermaid-svg-S8ScpxdjkcJv0YWT {font-family:"trebuchet ms",verdana,ari…...

数据库操作-MySQL-4(JDBC编程)

JDBC&#xff1a;通过Java代码操作mysql数据库&#xff0c;数据库会提供一些API供我们调用 MySQL、Oracle、等API有差异&#xff0c;但是Java统一了所有接口&#xff0c;即JDBC&#xff1b; 原始api-驱动包&#xff08;类似转接头&#xff09;-统一的api-Java 驱动包&#xff1…...

Linux打开.img镜像文件

kparkx 可以查看和修改img文件的内容 1.安装kparkx 1.安装 kpartx sudo apt-get update sudo apt-get install kpartx2.使用kpartx映射镜像文件 假设镜像文件名为 example.img &#xff0c;以下命令会将其分区映射到 dev/mapper/ sudo kpartx -av example.img• -a表示添加…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(5)

1.问题描述&#xff1a; 集成华为一键登录的LoginWithHuaweiIDButton&#xff0c; 但是Button默认名字叫 “华为账号一键登录”&#xff0c;太长无法显示&#xff0c;能否简写成“一键登录”与其他端一致&#xff1f; 解决方案&#xff1a; 问题分两个场景&#xff1a; 一、…...

【科研绘图系列】R语言绘制论文组合图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图1画图2画图3画图4画图5系统信息介绍 这篇文章详细介绍了如何使用R语言进行科研绘图,特别是绘制论文组合图形(multiple plots)。文章从数…...

springMVC-9数据格式化

数据格式化 学习目标&#xff1a; 理解在我们提交数据(比如表单时)&#xff0c;SpringMVC怎样对提交的数据进行转换和处理的 Spring MVC 上下文中内建了很多转换器&#xff0c;可完成大多数 Java 类型的转换工作。 基本数据类型可以和字符串之间自动完成转换 应用实例-页面…...

Kafka 和Redis 在系统架构中的位置

Kafka 位置&#xff1a;位于应用层和数据存储层之间&#xff0c;作为消息队列和数据传输中间件。作用&#xff1a; 数据收集与传输&#xff1a;收集应用层产生的数据&#xff0c;传输到后端数据存储系统。消息队列&#xff1a;实现应用层各服务之间的异步通信和解耦。与应用层…...

【Spring AI】如何实现文生图功能

在人工智能与软件开发深度融合的当下&#xff0c;Spring AI 作为构建 AI 驱动应用的有力框架&#xff0c;能够便捷集成各类 AI 能力。 文生图技术可将文本描述转化为图像&#xff0c;极具应用价值。接下来&#xff0c;我给大家详细讲解一下如何使用 Spring AI 调用文生图功能。…...

【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?

Kafka消息总线被视为“自下而上设计”的典型案例&#xff0c;核心在于其设计路径和演化逻辑完全符合自下而上方法的本质特征&#xff1a; 自下而上设计的核心逻辑 #mermaid-svg-pDSqW0S2h0bj15iN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16…...

ISBN书号查询接口如何用PHP实现调用?

一、什么是ISBN书号查询接口 ISBN数据查询接口是一项图书信息查询服务。它基于全球通用的ISBN编码系统&#xff0c;帮助用户快速获取图书的详细信息&#xff0c;包括书名、作者、出版社、出版时间、价格、封面等关键字段。 该接口广泛应用于电商平台、图书馆管理系统、二手书…...

什么是 Docker Compose 的网络(network),为什么你需要它,它是怎么工作的

Docker Compose 的网络就是&#xff1a;让多个容器之间能像“连上同一个局域网”一样互相通信&#xff0c;不用管 IP&#xff0c;用服务名就能访问彼此。 就像家里连接到同一个 WiFi 的手机、电脑、电视&#xff0c;它们都能互相发现对方&#xff0c;Docker 里的容器也是一样 …...

嵌入式Linux 期末复习指南(上)

鉴于互联网上针对本科目相关复习视频及资料过少&#xff0c; 撰写本篇期末复习指南用作期末复习知识点扫盲&#xff0c;以应对本科期末考试及格之用。 由于任课老师并透露考试范围或任何有关试卷的相关信息&#xff0c;本篇指南基于教材、上机实验报告及作者经验编写&#xff0…...

SpringBoot3.2新特性:JdbcClient

文章目录 一、简介二、使用1、支持隐式位置参数2、通过索引设置位置参数3、支持 Name / Value 对命名参数4、通过 Map 设置命名参数5、使用 JdbClient 执行更新操作6、使用示例 参考资料 一、简介 Spring 6.1 中新添加了 JdbcClient 接口&#xff0c;它提供了 Fluent 风格的 A…...

Dify:启动 Web 服务的详细指南

1. 进入 web 目录 cd web解释&#xff1a; cd 是 “change directory” 的缩写&#xff0c;用于切换当前工作目录。您需要进入项目的 web 目录&#xff0c;这是前端代码所在的位置。在这个目录下&#xff0c;您可以执行构建和启动 Web 服务的相关命令。 2. 安装依赖 pnpm in…...

3.1 HarmonyOS NEXT分布式数据管理实战:跨设备同步、端云协同与安全保护

HarmonyOS NEXT分布式数据管理实战&#xff1a;跨设备同步、端云协同与安全保护 在万物互联的时代&#xff0c;数据的跨设备流转与安全共享是全场景应用的核心需求。HarmonyOS NEXT通过分布式数据管理技术&#xff0c;实现了设备间数据的实时同步与端云协同&#xff0c;为开发…...

Aop + 注解实现数据字典类型转换 EasyExcel导出

Aop 注解 实现数据字典类型转换 文章目录 Aop 注解 实现数据字典类型转换一、基础方式✅字典转换简介&#x1f449;实现步骤✅ 1. 定义自定义注解Dict ✅ 2. 定义查询字典项的两个方法✅ 3. 定义Aop拦截我们查询的方法✅ 4. VO映射类✅ 5. Controller层✅ 6. serviceImpl✅ 7. …...

Python 元组方法全集详解

Python 元组方法全集详解 在 Python 中,元组(tuple)是不可变序列类型,因此支持的操作比列表少。以下是元组支持的所有方法和操作: 一、元组核心方法 1. 创建元组 # 标准创建 t = (1, 2, 3) # (1, 2, 3) t = tuple(...

Selenium 中 JavaScript 点击操作的原理及应用

在 Selenium 中使用 JavaScript 执行点击操作&#xff08;如 driver.execute_script("arguments[0].click();", element)&#xff09;的原理涉及 WebDriver 架构、浏览器事件机制以及 JavaScript 对 DOM 的直接操作&#xff0c;以下是详细解释&#xff1a; 1. Selen…...

Xilinx超过256m bit flash固件跳转失败问题

问题描述 按照 链接: Xilinx 7系列fpga在线升级和跳转 这个方式跳转失败 问题排查 进一步排查现象如下 上面这个现象呈现出明显的以16m为周期的规律。感觉很大概率是因为flash超过了16m&#xff08;256bit&#xff09;导致的地址越界问题。另外我在CSDN上也找到类似的问题…...

SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入

可重入 Redisson 的锁支持 可重入性&#xff0c;这意味着同一个线程在获取锁后&#xff0c;如果再次尝试获取该锁&#xff0c;它可以成功地获得锁&#xff0c;而不会被阻塞。 每次一个线程成功获取锁后&#xff0c;它的持有次数会增加。当线程再次获取该锁时&#xff0c;Redi…...

02 APP 自动化-Appium 运行原理详解

环境搭建见 01 APP 自动化-环境搭建 文章目录 一、Appium及Appium自动化测试原理二、Appium 自动化配置项三、常见 ADB 命令四、第一个 app 自动化脚本 一、Appium及Appium自动化测试原理 Appium 跨平台、开源的 app 自动化测试框架&#xff0c;用来测试 app 应用程序&#x…...

由docker引入架构简单展开说说技术栈学习之路

想象一下&#xff0c;你开了一家线上小卖部&#xff08;单机版&#xff09;&#xff0c;突然爆单了怎么办&#xff1f;别急&#xff0c;技术架构的升级打怪之路&#xff0c;可比哆啦A梦的口袋还神奇&#xff01; 第1关&#xff1a;单枪匹马的创业初期&#xff08;单机架构&…...