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

springboot整合MybatisPlus+MySQL

上一篇:springboot整合sentinel和对feign熔断降级

文章目录

    • 一、准备
    • 二、主要工作
    • 三、具体步骤
      • 3.1 准备数据库环境
      • 3.20 pre引入依赖
      • 3.2 引入依赖
      • 3.3 bootstrap.yml配置mybatisplus
      • 3.40 pre引入service、mapper
      • 3.4 引入实体类、service、mapper
    • 四、测试
      • 目录结构
    • 五、wrapper,分页相关语法

一、准备

docker部署MySQL:参考docker安装各个组件的命令

二、主要工作

  • 准备数据库环境:新建数据库sd,再导入sql脚本
  • 引入MybatisPlus和MySQL依赖
  • 修改配置文件bootstrap.yml
  • 使用Mybatisplus

三、具体步骤

3.1 准备数据库环境

CREATE TABLE `t_product` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(64) NOT NULL COMMENT '名称',`price` int NOT NULL COMMENT '价格',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14787164048663 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表';CREATE TABLE `t_order` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`amount` int NOT NULL COMMENT '金额',`user_id` bigint NOT NULL COMMENT '创建订单的用户id',`create_time` datetime NOT NULL DEFAULT now() COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21787164048663 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单表';insert into t_product values(null,"铅笔",3);
insert into t_product values(null,"橡皮",1);
insert into t_product values(null,"钢笔",50);
insert into t_product values(null,"文具袋",20);insert into t_order(`amount`,`user_id`) values(99,10001);
insert into t_order(`amount`,`user_id`) values(88,10002);
insert into t_order(`amount`,`user_id`) values(77,10003);
insert into t_order(`amount`,`user_id`) values(66,10004);

3.20 pre引入依赖

先改变一下项目结构,给product-service和order-service加一个父模块sd-service

  • 新建一个service-demo的子模块sd-service,删掉多余文件,pom文件中打包类型为pom,并且\<modules>部分把product-service和order-service放进去
  • 删掉service-demo中的\<modules>部分中的product-service和order-service
  • 在product-service和order-service的pom文件中\<parent>设置为sd-service
  • 将product-service和order-service的模块目录,分别移动到sd-service下
  • 结构修改完成后,可以将product-service和order-service模块的共同都有的依赖移动到sd-service,比如nacos,lombok,sentinel,web这些。再重新加载所有Maven工程

修改完成后结构如下
在这里插入图片描述

3.2 引入依赖

在sd-service中引入依赖,product-service和order-service自动会继承

        <!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!--2.7.8版本mysql-connector-java -> com.mysql:mysql-connector-j 并删除 mysql-connector-java 依赖管理--><!--mysql--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId> </dependency>

3.3 bootstrap.yml配置mybatisplus

# 数据源
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.200.131:3306/sd?serverTimezone=GMT%2B8username: rootpassword: root# mybatisplus配置
mybatis-plus:# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)mapper-locations: classpath:mapper/*.xml# 以下配置均有默认值,可以不设置#  global-config:#    db-config:#      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";#      id-type: auto#      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"#      field-strategy: NOT_EMPTY#      #数据库类型#      db-type: MYSQLconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段# call-setters-on-nulls: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.40 pre引入service、mapper

  • product相关类的idInteger改成Long,并改相关的controller
  • 引入返回响应体类R<T>
/*** 响应信息主体** @author ruoyi*/
public class R<T> implements Serializable
{private static final long serialVersionUID = 1L;/** 成功 */private static final int SUCCESS = 200;/** 失败 */private static final int FAIL = 500;private int code;private String msg;private T data;public static <T> R<T> ok(){return restResult(null, SUCCESS, null);}public static <T> R<T> ok(T data){return restResult(data, SUCCESS, null);}public static <T> R<T> ok(T data, String msg){return restResult(data, SUCCESS, msg);}public static <T> R<T> fail(){return restResult(null, FAIL, null);}public static <T> R<T> fail(String msg){return restResult(null, FAIL, msg);}public static <T> R<T> fail(T data){return restResult(data, FAIL, null);}public static <T> R<T> fail(T data, String msg){return restResult(data, FAIL, msg);}public static <T> R<T> fail(int code, String msg){return restResult(null, code, msg);}private static <T> R<T> restResult(T data, int code, String msg){R<T> apiResult = new R<>();apiResult.setCode(code);apiResult.setData(data);apiResult.setMsg(msg);return apiResult;}public int getCode(){return code;}public void setCode(int code){this.code = code;}public String getMsg(){return msg;}public void setMsg(String msg){this.msg = msg;}public T getData(){return data;}public void setData(T data){this.data = data;}public static <T> Boolean isError(R<T> ret){return !isSuccess(ret);}public static <T> Boolean isSuccess(R<T> ret){return R.SUCCESS == ret.getCode();}
}

3.4 引入实体类、service、mapper

  • com.hdl.product.pojos包新建包po
@Data
@TableName("t_product")
public class Product {@TableId(value = "id",type = IdType.AUTO)Long id;@TableField(value = "name")String name;@TableField(value = "price")Integer price;
}
  • com.hdl.product包下新建包serviceservicce.impl
// com.hdl.product.service包下
public interface ProductService extends IService<Product> {
}// com.hdl.product.service.impl包下
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}
  • com.hdl.product包下新建包mapper
@Mapper
public interface ProductMapper extends BaseMapper<Product> {
}

四、测试

修改controller

    @GetMapping("/testmp")public R testmp(){List<Product> list = productService.list();return R.ok(list);}

测试
在这里插入图片描述

控制台打印出了日志
在这里插入图片描述

目录结构

在这里插入图片描述

五、wrapper,分页相关语法

Springboot集成MybatisPlus以及常用语句、分页

相关文章:

springboot整合MybatisPlus+MySQL

上一篇&#xff1a;springboot整合sentinel和对feign熔断降级 文章目录 一、准备二、主要工作三、具体步骤3.1 准备数据库环境3.20 pre引入依赖3.2 引入依赖3.3 bootstrap.yml配置mybatisplus3.40 pre引入service、mapper3.4 引入实体类、service、mapper 四、测试目录结构 五…...

【MySQL】视图、用户和权限管理

目录 视图创建视图数据修改影响删除视图视图优点 用户和权限管理查看当前的数据库拥有用户信息创建用户修改密码删除用户权限授权回收权限 视图 视图就是相当于创建一个表&#xff0c;将查询到的结果集给存储起来。像使用复杂的多表查询查询到的结果集就不可以对结果集操作。而…...

Linux基础(五):linux文件种类与扩展名

1.文件种类 文件种类含义正规文件&#xff08; regular file &#xff09;就是一般我们在进行存取的类型的文件&#xff0c; 在由 ls -al 所显示出来的属性方面&#xff0c; 第一个字符为 [ - ]&#xff0c; 例如 [-rwxrwxrwx ]。 另外&#xff0c; 依照文件的内容&#xff0c…...

C语言-c语言组成

1.C语言的组成 一个C源程序是由 一个或者多个.c文件 和 0个或者多个.h 文件 组成 源程序: 是指未编译的 按照一定的程序设计语言规范书写的文本文件 .c文件 : c源代码 .h文件 : 头文件(接口文件) 2. .c文件 1)预处理命令 以#开头的行,在编译之前 会事…...

编程题 7-13 日K蜡烛图【PAT】

文章目录 题目输入格式输出格式输入样例1输出样例1输入样例2输出样例2输入样例3输出样例3 题解解题思路完整代码 编程练习题目集目录 题目 股票价格涨跌趋势&#xff0c;常用蜡烛图技术中的 K K K 线图来表示&#xff0c;分为按日的日 K K K 线、按周的周 K K K 线、按月的…...

iOS开发工程师面试

iOS开发工程师面试题可以涵盖多个方面,包括但不限于iOS开发的基础知识、高级概念、性能优化、架构设计、最新技术等。 1. 基础知识 1.1 请解释iOS中的Xcode是什么,以及它在开发中的作用和功能有哪些? Xcode是用于iOS和macOS等苹果平台开发的集成开发环境(IDE),提供了代…...

无人机避障—— 激光雷达定高北醒TF03-UART(二)

无人机避障过程&#xff0c;光靠大疆飞控内部的气压计不准&#xff0c;很容易在高度较低的时候受到地面植被等障碍物影响&#xff0c;使得掉高严重&#xff0c;因此采用激光雷达定高模块进行定高。 硬件&#xff1a; 北醒TF03-UART、Xavier-NX 软件代码&#xff1a; 北醒官…...

在虚幻引擎中实现Camera Shake 相机抖动/震屏效果

在虚幻引擎游戏中创建相机抖动有时能让画面更加高级 , 比如 遇到大型的Boss , 出现一些炫酷的特效 加一些短而快的 Camera Shake 能达到很好的效果 , 为玩家提供沉浸感 创建Camera Shake 调整Shake参数 到第三人称或第一人称蓝图 调用Camera Shake Radius值越大 晃动越强...

SQL Server的文本和图像函数

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…...

PN8034非隔离12V300MA,SOP7/DIP7开关电源芯片

PN8034宽输出范围非隔离交直流转换芯片 PN8034SSC-R1B----SOP7&#xff0c; PN8034NSC-T1 ----DIP7&#xff0c; PN8034概述 PN8034集成PFM控制器及650V高雪州能力智能功本MOSFET&#xff0c;用于外图元器件极精简的小功率非隔离开关电源。PN8034内置高压启动模块&#xff0c…...

VMware下Ubuntu找不到共享文件夹

在VMware的设置中已经设置了共享文件夹&#xff0c;在Ubuntu系统中找不到&#xff0c;参考了网上其他的文章&#xff0c;发现还是不能解决问题&#xff0c;无意中尝试了一小步&#xff0c;没想到成功解决了&#xff0c;在这里记录一下。 1&#xff09;首先查询本机的gid 2&…...

银河麒麟桌面操作系统V10登录闪退问题解决

银河麒麟桌面操作系统V10登录闪退问题解决 1、问题描述2、问题分析3、问题解决方法第一步&#xff1a;修改/tmp文件夹权限第二步&#xff1a;重启图形化服务 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 在使用银河麒麟桌面操作系统V10时…...

【Git原理与使用】分支管理

分支管理 1.理解分支2.创建分支2.1创建分支2.2切换分支2.3合并分支 3.删除分支4.合并冲突4.分支管理策略5.分支策略6.bug分支7.删除临时分支8.小结 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&…...

Linux操作系统分析实验-多线程与内核模块编程,实验一

实验一 多线程与内核模块编程 一、实验目的 1、理解Linux下进程的结构&#xff1b; 2、理解Linux下产生新进程的方法&#xff08;系统调用—fork函数&#xff09;&#xff1b; 3、掌握如何启动另一程序的执行&#xff1b; 4、理解Linux下线程的结构&#xff1b; 5、理解…...

AI绘画Stable Diffusion人物背景替换实操教程,让创意无限延伸

大家好&#xff0c;我是灵魂画师向阳 Stable Diffusion以其强大的能力可以实现人物背景的更换。本文将带你深入了解如何利用Stable Diffusion中的Inpaint Anything插件快速且精准地实现人物背景的替换&#xff0c;从而让你的图片焕发新生。 前期准备 本文会使用到Inpaint An…...

linux环境oracle11.2.0.4打补丁(p31537677_112040_Linux-x86-64.zip)

上传补丁及opatch工具 创建目录并上传opatch工具和补丁包 百度网盘地址 链接: https://pan.baidu.com/s/1EA5oerm52aesZUnb5OnQsA 提取码: ib8f [oraclerhel64 ~]$ mkdir /u01/psu [oraclerhel64 ~]$ cd /u01/psu [oraclerhel64 psu]$ ll total 514572 -rw-r--r-- 1 oracle o…...

华为 HCIP-Datacom H12-821 题库 (29)

&#x1f423;博客最下方微信公众号回复题库,领取题库和教学资源 &#x1f424;诚挚欢迎IT交流有兴趣的公众号回复交流群 &#x1f998;公众号会持续更新网络小知识&#x1f63c; 1.运行 IS-IS 的两台路由器&#xff0c;只有 IIH 发送的时间间隔相同才可以建立邻接关系 A、正…...

MySQL 为什么一定要有一个主键

引言 在数据库设计中&#xff0c;主键&#xff08;Primary Key&#xff09;是一个至关重要的概念。MySQL 作为最广泛使用的关系型数据库之一&#xff0c;主键在 MySQL 表设计中扮演着关键角色。主键不仅决定了表中数据的唯一性和完整性&#xff0c;还对数据库性能、数据查询、…...

Pycharm 本地搭建 stable-diffusion-webui

一、下载工程源码 Github官方连接 https://github.com/AUTOMATIC1111/stable-diffusion-webui 二、Pycharm打开工程 1、设置环境 文件-设置-项目-Python解析器-添加解释器-添加本地解释器 Conda环境-创造新环境-Python版本3.10 注意一定要选择Python3.10版本&#xff0c;否…...

python/爬虫技术/lxml工具介绍/XML和HTML解析

1.lxml介绍&#xff1a; lxml 是一个Python库&#xff0c;它提供了非常强大的XML和HTML解析功能。它基于libxml2和libxslt&#xff0c;是处理XML和HTML文档的首选库之一。 2.安装 首先&#xff0c;需要安装lxml库。可以通过pip来安装&#xff0c;在控制台内执行安装命令。 p…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...