MyBatis-Plus(为简化开发而生)

一、MyBatis-Plus概述

官网: baomidou.com

MyBatis-Plus(简称 MP) 在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

(1)单表操作

不需要编写sql语句,封装方法,使用封装的这些方法方便实现

(2)复杂查询或者多表查询

仍需编写SQL语句实现

(3)大致步骤

①创建数据库、创建表、添加记录

②创建SpringBoot工程,引入MP相关依赖

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

③SpringBoot创建配置文件,指定操作数据库路径

#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

④创建SpringBoot工程启动类

⑤创建操作表对应实体类

⑥创建Mapper,继承BaseMapper,指定对应实体类

 

二、CRUD

(1)在官网可查注解用法,以下列举常用注解:

①        @TableName(" "):相同时可不写

 

②        @TableId主键策略

 

 

③        @TableField(" ") 

 

 (2)单表操作时使用baseMapper已封装好的方法进行crud

CRUD:

@SpringBootTest
public class MpDemo1 {//注入mapper@Autowiredprivate UserMapper userMapper;//1 查询所有记录 selectList@Testpublic void findAll() {List<User> list = userMapper.selectList(null);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});}//2 添加操作insert@Testpublic void addUser() {//创建对象,设置值User user = new User();user.setName("东方不败");user.setAge(30);user.setEmail("dfbb@atguigu.com");//调用方法int rows = userMapper.insert(user);System.out.println(rows);System.out.println(user);}//3 根据id查询@Testpublic void getUserById() {User user = userMapper.selectById(1L);System.out.println(user);}//4 修改操作@Testpublic void updateUser() {//根据id查询User user = userMapper.selectById(1L);//设置修改值user.setName("岳不群");user.setAge(50);//调用方法完成修改int rows = userMapper.updateById(user);System.out.println(rows);}//5 删除操作@Testpublic void deleteUser() {userMapper.deleteById(2L);}//6 条件查询}

删除操作: 

 

条件查询:

//select * from user where name=? and age=?
@Test
public void select1() {//封装条件对象LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getName,"Tom");wrapper.eq(User::getAge,28);//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}//select * from user where age>=28
@Test
public void select2() {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.ge(User::getAge,28);//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}//select * from user name like ?
@Test
public void select3() {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.like(User::getName,"m");//调用方法List<User> list = userMapper.selectList(wrapper);list.forEach(user->{System.out.println(user.getName()+":"+user.getAge());});
}

 

三、主键策略

默认策略:都是数字

uuid值:数字和字母

四、分页查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 C++11 的 `std::atomic`:误区、性能与实际应用

在现代 C 开发中&#xff0c;std::atomic 是处理多线程同步时的重要工具之一。它通过提供原子操作保证了线程安全&#xff0c;但在实际使用时却隐藏着许多不为人知的陷阱和性能影响。本篇文章将带你深入理解 std::atomic 的使用方式、潜在问题&#xff0c;以及如何正确应用于多…

芋道源码,芋道sql,yudao,yudao-vue-pro拒绝割韭菜

芋道的开发指南实际上只需要小小的操作就可以观看啦 为了避免被割韭菜 我们可以使用插件去进行解锁文档 项目地址 otomayss/free-yd (github.com)[这里是图片002]https://github.com/otomayss/free-yd

Mac软件推荐

Mac软件推荐 截图SnipasteXnipBob 快捷启动Raycast 系统检测Stats 解压缩The UnarchiverKeka&#xff08;付费&#xff09; 视频播放IINA 视频下载Downie&#xff08;付费&#xff09; 屏幕刘海TopNotchMediaMate&#xff08;付费&#xff09;NotchDrop&#xff08;付费&#x…

【ETCD】【源码阅读】 深入解析 raftNode.start`函数:Raft 核心启动逻辑剖析

raftNode.start方法 是 etcd 中 Raft 模块的核心启动点&#xff0c;其职责是管理 Raft 状态机的状态变迁、日志处理及集群通信等逻辑。通过对源码的逐行分析&#xff0c;我们将全面揭示其运行机制&#xff0c;探讨其设计背后的分布式系统理念。 函数核心结构 raftNode.start 方…

车站值班员题库

1. 联系用手信号显示十、五、三车距离信号中的“三车”&#xff08;约33m&#xff09;信号时&#xff0c;昼间的显示方式为展开的绿色信号旗单臂平伸下压 &#xff08; 一 &#xff09;次。J442 2. 联系用手信号显示股道号码时&#xff0c;昼间右臂向上直伸&#xff0c…

BI中场战事:国外厂商退,国产厂商进

从沉睡的黄金到经济的新宠&#xff0c;数据要素正上演华丽转身。 近年来&#xff0c;数字经济的长驱向前&#xff0c;离不开数据要素价值释放所带来的持续动力。作为第五大生产要素&#xff0c;数据要素的价值释放需要从数据采集、传输到存储、治理&#xff0c;再到分析和可视…

2024年华中杯数学建模C题基于光纤传感器的平面曲线重建算法建模解题全过程文档及程序

2024年华中杯数学建模 C题 基于光纤传感器的平面曲线重建算法建模 原题再现 光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器技术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号&#xff0c;其基本原理是当外界环境参数发生变化时&#xff0c…

【LeetCode每日一题】LeetCode 209.长度最小的子数组

LeetCode 209.长度最小的子数组 题目描述 给定一个正整数数组 nums 和一个正整数 target&#xff0c;找出连续子数组的最小长度&#xff0c;使得子数组的和大于或等于 target。如果不存在符合条件的子数组&#xff0c;返回 0。 Java 实现代码 public class Solution {publi…

【openwrt】openwrt-21.02 基于IP地址使用ipset实现策略路由操作说明

openwrt版本信息 DISTRIB_ID=OpenWrt DISTRIB_RELEASE=21.02-SNAPSHOT DISTRIB_REVISION=r0-6bf6af1d5 DISTRIB_TARGET=mediatek/mt7981 DISTRIB_ARCH=aarch64_cortex-a53 DISTRIB_DESCRIPTION=OpenWrt 21.02-SNAPSHOT r0-6bf6af1d5 DISTRIB_TAINTS=no-all busybox override …

【H2O2|全栈】MySQL的基本操作(三)

目录 前言 开篇语 准备工作 案例准备 多表查询 笛卡尔积 等值连接 外连接 内连接 自连接 子查询 存在和所有 含于 分页查询 建表语句 结束语 前言 开篇语 本篇继续讲解MySQL的一些基础的操作——数据字段的查询中的多表查询和分页查询&#xff0c;与单表查询…

从单体到微服务:如何借助 Spring Cloud 实现架构转型

一、Spring Cloud简介 Spring Cloud 是一套基于 Spring 框架的微服务架构解决方案&#xff0c;它提供了一系列的工具和组件&#xff0c;帮助开发者快速构建分布式系统&#xff0c;尤其是微服务架构。 Spring Cloud 提供了诸如服务发现、配置管理、负载均衡、断路器、消息总线…

yarn : 无法加载文件 C:\Users\L\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁

关于执行安装yarn命令后执行yarn -v报错&#xff1a; 先确认执行安装yarn命令是否有误 # 安装yarn npm install yarn -g 终端输入set-ExecutionPolicy RemoteSigned 当然如果yarn -v仍然执行失败&#xff0c;考虑使用管理员方式运行IDEA&#xff0c; 注&#xff1a;如上操作…

centos 常见问题处理

免密登录配置 # 在当前机器下 执行命令 生成 私钥和公钥 ~/.ssh 目录下 ssh-keygen -t rsa # 执行如下命令 把公钥 放到 对应机器上的 ~/.ssh/authorized_keys ssh-copy-id 172.17.68.220 # 如此 两台机器两两配置 centos ssh连接慢 vim /etc/ssh/sshd_config # UseD…

java全栈day12-后端Web实战(IOC+DI)

前言&#xff1a;前面的基础知识了解后进入实战篇&#xff0c;从以下四个方面进行准备 一、开发规范 1.1前后端分离开发 前言回顾 二、Restful风格 引言&#xff1a;前端与后端在进行交互的时候&#xff0c;所使用的url风格叫Restful。 2.1概述 小结 2.2环境准备 2.2.1apif…

链式设计模式——装饰模式和职责链模式

一、装饰模式 1、概述 动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 ConcreteComponent &#xff1a;是定义了一个具体的对象&#xff0c;可以给这个对象添加一些职责&#xff1b;Decorator &#xff1a;装饰抽象…

Cmake+基础命令

一、版本要求&#xff1a; 检查 cmake 版本号的最低要求&#xff0c;不满足条件时报错。 cmake_minimum_required(VERSION <version>)参数&#xff1a; version&#xff1a;最低要求的版本号 例子&#xff1a; # 最低要求安装3.21版本的cmake cmake_minimum_required…

Java——容器(单例集合)(上)

一 容器介绍 容器&#xff0c;是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、箱子和包等 程序中的“容器”也有类似的功能&#xff0c;用来容纳和管理数据。比如&#xff0c;如下新闻网站的新闻列表、教育网站的课程列表就是用“容器”来管理 视频…

word poi-tl 表格功能增强,实现表格功能垂直合并

目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加&#xff08;插件实现&#xff09;MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中&#xff0c;word文档需要垂直合并表格&…

OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算机器人世界/手眼标定&#xff1a; w T b _{}^{w}\textrm{T}_b w​Tb​ 和 c T g _{}^{c}\textrm{T}_g c​Tg​。 cv::calibrateRobotWorldHa…

GPT系列模型简要概述

GPT-1&#xff1a;&#xff08;0.117B参数量&#xff0c;0.8B words预训练数据) 动机&#xff1a; 在RNN和Transformer之间&#xff0c;选择了后者。 和《All your need is Attention》翻译模型的Encoder-Decoder架构相比&#xff0c;只保留Decoder&#xff0c;因此去掉了Cross…