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
相关类的id
从Integer
改成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
包下新建包service
和servicce.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
上一篇:springboot整合sentinel和对feign熔断降级 文章目录 一、准备二、主要工作三、具体步骤3.1 准备数据库环境3.20 pre引入依赖3.2 引入依赖3.3 bootstrap.yml配置mybatisplus3.40 pre引入service、mapper3.4 引入实体类、service、mapper 四、测试目录结构 五…...
【MySQL】视图、用户和权限管理
目录 视图创建视图数据修改影响删除视图视图优点 用户和权限管理查看当前的数据库拥有用户信息创建用户修改密码删除用户权限授权回收权限 视图 视图就是相当于创建一个表,将查询到的结果集给存储起来。像使用复杂的多表查询查询到的结果集就不可以对结果集操作。而…...
Linux基础(五):linux文件种类与扩展名
1.文件种类 文件种类含义正规文件( regular file )就是一般我们在进行存取的类型的文件, 在由 ls -al 所显示出来的属性方面, 第一个字符为 [ - ], 例如 [-rwxrwxrwx ]。 另外, 依照文件的内容,…...
C语言-c语言组成
1.C语言的组成 一个C源程序是由 一个或者多个.c文件 和 0个或者多个.h 文件 组成 源程序: 是指未编译的 按照一定的程序设计语言规范书写的文本文件 .c文件 : c源代码 .h文件 : 头文件(接口文件) 2. .c文件 1)预处理命令 以#开头的行,在编译之前 会事…...
编程题 7-13 日K蜡烛图【PAT】
文章目录 题目输入格式输出格式输入样例1输出样例1输入样例2输出样例2输入样例3输出样例3 题解解题思路完整代码 编程练习题目集目录 题目 股票价格涨跌趋势,常用蜡烛图技术中的 K K K 线图来表示,分为按日的日 K K K 线、按周的周 K K K 线、按月的…...
iOS开发工程师面试
iOS开发工程师面试题可以涵盖多个方面,包括但不限于iOS开发的基础知识、高级概念、性能优化、架构设计、最新技术等。 1. 基础知识 1.1 请解释iOS中的Xcode是什么,以及它在开发中的作用和功能有哪些? Xcode是用于iOS和macOS等苹果平台开发的集成开发环境(IDE),提供了代…...
无人机避障—— 激光雷达定高北醒TF03-UART(二)
无人机避障过程,光靠大疆飞控内部的气压计不准,很容易在高度较低的时候受到地面植被等障碍物影响,使得掉高严重,因此采用激光雷达定高模块进行定高。 硬件: 北醒TF03-UART、Xavier-NX 软件代码: 北醒官…...
在虚幻引擎中实现Camera Shake 相机抖动/震屏效果
在虚幻引擎游戏中创建相机抖动有时能让画面更加高级 , 比如 遇到大型的Boss , 出现一些炫酷的特效 加一些短而快的 Camera Shake 能达到很好的效果 , 为玩家提供沉浸感 创建Camera Shake 调整Shake参数 到第三人称或第一人称蓝图 调用Camera Shake Radius值越大 晃动越强...
SQL Server的文本和图像函数
新书速览|SQL Server 2022从入门到精通:视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通(视频教学超值版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…...
PN8034非隔离12V300MA,SOP7/DIP7开关电源芯片
PN8034宽输出范围非隔离交直流转换芯片 PN8034SSC-R1B----SOP7, PN8034NSC-T1 ----DIP7, PN8034概述 PN8034集成PFM控制器及650V高雪州能力智能功本MOSFET,用于外图元器件极精简的小功率非隔离开关电源。PN8034内置高压启动模块,…...
VMware下Ubuntu找不到共享文件夹
在VMware的设置中已经设置了共享文件夹,在Ubuntu系统中找不到,参考了网上其他的文章,发现还是不能解决问题,无意中尝试了一小步,没想到成功解决了,在这里记录一下。 1)首先查询本机的gid 2&…...
银河麒麟桌面操作系统V10登录闪退问题解决
银河麒麟桌面操作系统V10登录闪退问题解决 1、问题描述2、问题分析3、问题解决方法第一步:修改/tmp文件夹权限第二步:重启图形化服务 💐The Begin💐点点关注,收藏不迷路💐 在使用银河麒麟桌面操作系统V10时…...
【Git原理与使用】分支管理
分支管理 1.理解分支2.创建分支2.1创建分支2.2切换分支2.3合并分支 3.删除分支4.合并冲突4.分支管理策略5.分支策略6.bug分支7.删除临时分支8.小结 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励&…...
Linux操作系统分析实验-多线程与内核模块编程,实验一
实验一 多线程与内核模块编程 一、实验目的 1、理解Linux下进程的结构; 2、理解Linux下产生新进程的方法(系统调用—fork函数); 3、掌握如何启动另一程序的执行; 4、理解Linux下线程的结构; 5、理解…...
AI绘画Stable Diffusion人物背景替换实操教程,让创意无限延伸
大家好,我是灵魂画师向阳 Stable Diffusion以其强大的能力可以实现人物背景的更换。本文将带你深入了解如何利用Stable Diffusion中的Inpaint Anything插件快速且精准地实现人物背景的替换,从而让你的图片焕发新生。 前期准备 本文会使用到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)
🐣博客最下方微信公众号回复题库,领取题库和教学资源 🐤诚挚欢迎IT交流有兴趣的公众号回复交流群 🦘公众号会持续更新网络小知识😼 1.运行 IS-IS 的两台路由器,只有 IIH 发送的时间间隔相同才可以建立邻接关系 A、正…...
MySQL 为什么一定要有一个主键
引言 在数据库设计中,主键(Primary Key)是一个至关重要的概念。MySQL 作为最广泛使用的关系型数据库之一,主键在 MySQL 表设计中扮演着关键角色。主键不仅决定了表中数据的唯一性和完整性,还对数据库性能、数据查询、…...
Pycharm 本地搭建 stable-diffusion-webui
一、下载工程源码 Github官方连接 https://github.com/AUTOMATIC1111/stable-diffusion-webui 二、Pycharm打开工程 1、设置环境 文件-设置-项目-Python解析器-添加解释器-添加本地解释器 Conda环境-创造新环境-Python版本3.10 注意一定要选择Python3.10版本,否…...
python/爬虫技术/lxml工具介绍/XML和HTML解析
1.lxml介绍: lxml 是一个Python库,它提供了非常强大的XML和HTML解析功能。它基于libxml2和libxslt,是处理XML和HTML文档的首选库之一。 2.安装 首先,需要安装lxml库。可以通过pip来安装,在控制台内执行安装命令。 p…...
Kafka技术详解[5]: 集群启动
目录 集群启动 相关概念 代理:Broker 控制器:Controller 启动ZooKeeper 启动Kafka 初始化ZooKeeper 初始化服务 启动任务调度器 创建数据管理器 创建远程数据管理器 创建副本管理器 创建ZK元数据缓存 创建Broker通信对象 创建网络通信对象 注册Brok…...
记一次教学版内网渗透流程
信息收集 如果觉得文章写的不错可以共同交流 http://aertyxqdp1.target.yijinglab.com/dirsearch dirsearch -u "http://aertyxqdp1.target.yijinglab.com/"发现 http://aertyxqdp1.target.yijinglab.com/joomla/http://aertyxqdp1.target.yijinglab.com/phpMyA…...
[Python学习日记-31] Python 中的函数
[Python学习日记-31] Python 中的函数 简介 语法定义 函数的参数 简介 引子: 你是某公司的一个高级程序员,现在老板让你写一个监控程序,需要24小时全年无休的监控公司网站服务器的系统状况,当 CPU、Memory、Disk 等指标的使用…...
Kafak入门技术详解
抱歉,没有太多的时间进行详细校对 目录 一、Kafka简介 1.消息队列 1.1为什么需要消息队列 1.2消息队列 1.3消息队列的分类 1.4P2P和发布订阅MQ的比较 1.5消息系统的使用场景 1.6常见的消息系统 2.Kafka简介 2.1简介 2.2设计目标 2.3 kafka核心的概念 二…...
X-Spreadsheet:Web端Excel电子表格工具库
在数字化时代,数据管理与分析的重要性日益凸显。传统的电子表格软件如Microsoft Excel和Google Sheets在数据处理方面发挥着重要作用,但在Web端,一款名为X-Spreadsheet的工具库正以其独特的优势逐渐崭露头角。本文将详细介绍X-Spreadsheet&am…...
为什么很多APP取消网页版
厂商为了增加用户黏度把所有的内容都放在 APP 上,京东的网页也搜索不到东西了,就算看到东西要跳转过来还需要先登录一下。 对比亚马逊这类的其他的购物网站,基本上都是网页内容和 APP 的内容都是同步的,网页直接看也可以下单&…...
Kubernetes高级功能
资源配额 什么是资源配额 资源配额,通过 ResourceQuota 对象来定义,对每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命名空间中的 Pod 可以使用的计算资源的总上限。 资源配额应用 创建的…...
(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第1关Linux 基础知识
关卡任务 闯关任务需要在关键步骤中截图: 任务描述 完成所需时间 闯关任务 完成SSH连接与端口映射并运行hello_world.py 10min 可选任务 1 将Linux基础命令在开发机上完成一遍 10min 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 10min 可选任务 3 创…...
【python爬取网页信息并存储】
爬取网页信息并存储是一个常见的任务,通常涉及以下几个步骤: 发送HTTP请求:使用库如requests来发送HTTP请求获取网页内容。解析网页内容:使用库如BeautifulSoup或lxml来解析HTML内容,提取所需信息。存储数据ÿ…...
TCP、UDP
TCP和UDP的区别 是否面向连接:UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。 是否是可靠传输:远地主机在收到 UDP 报文后,不需要给出任…...
网站开发怎么自动获取位置/做网页怎么做
目录 一、scala运算符本质 二、算术运算符 三、逻辑运算符 四、关系运算符 注:scala 与equals区别 五、赋值运算符 六、位运算符 一、scala运算符本质 在Scala中其实是没有运算符的,所有运算符都是方法。 1)当调用对象的方法时&#…...
怎么用手机做网站/网站排名推广工具
MSYS:Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。(是否厌倦了Cygwin蜗牛般的shell环境,试试MSYS中的rxvt吧&…...
做标书经验分享网站/网站推广哪个好
不管是农场内亦或是rts,我很难总结出游戏的乐趣究竟在哪里 也许最近看到了一些端倪 玩家乐于创造出一些东西,比如看着星露谷物语的树一棵棵菜被种植,监狱建筑师里被建筑的房间,rts里被生产出来的部队 玩家乐于建筑出有序的东西 毁…...
营销推广方法/宁波seo哪家好快速推广
前言 因为游戏开发在架构上要考虑性能和实际需求,在尽量不引入第三方库、框架的前提下进行开发,所以在编码时候会经常用到设计模式对代码进行复用,对业务逻辑架构解耦,尽量减少hard code。 单例模式(Singleton P…...
门户网站开发请示/微信小程序
来源:ImportNew - 吴际让我们开始展示内存中Java类和对象结构你可曾好奇过Java内存管理核心构件?你是否问过自己某些奇怪的问题,比如:一个类在内存中占据多少空间?我的对象在内存中消耗了多少空间?对象的属…...
青岛网站定制/明星百度指数在线查询
假设你两个时间戳为$a,$b;你可以用$c$a-$b;(反正就是大的减小的),这时$c就是两个时间间隔的秒数了。想求两个时间间隔的天数就用:$c/(60*60*24)一天的毫秒数是:86400,所以直接$c/86400 答案也是一样的想求两个时间间隔的小时数就用:$c/(60*60)//PHP 计算…...