SpringBoot---------整合Mybatisplus

快速入门

第一步:导入依赖

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency>

第二步:编写mapper层,最最最重要的点: extends BaseMapper<Pojo>,就可以不用再编写Mapper层的方法以及SQL查询语句

package com.example.springboot_learn.mapper;import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.example.springboot_learn.Pojo.User;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface usermapper extends BaseMapper<User> {}

 第三步:使用mybatisplus

#mybatis的日志
mybatis-plus://日志显示configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl//关掉图标global-config:banner: false

① 普通查询:

 @Testvoid testum(){//新增数据User user=new User(6,"zzl",55,"test6baomidou.com");um.insert(user);//查询全部List<User> userslist = um.selectList(null);System.out.println(userslist);//参数ID查询User user1 = um.selectById(2);System.out.println("user1 = " + user1);//修改数据,这里有个注意点:只会修改你赋的值,未初始化的值不做修改User user2=new User();user2.setId(5);user2.setName("zzlyyds");um.updateById(user2);//删除数据um.deleteById(6);}

 

② 分页查询:

    @Testvoid tset02(){//分页查询,要使用拦截器实现该功能//1:显示第1页      2:一页多少条数据IPage page = new Page(1,2);um.selectPage(page,null);//显示第几页System.out.println(page.getCurrent());//显示每页大小System.out.println(page.getSize());//显示一共有多少页System.out.println(page.getPages());//显示一共用多少条数据System.out.println(page.getTotal());//显示该页的数据System.out.println(page.getRecords());}

 分页查询的拦截器配置:

package com.example.springboot_learn;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class mpConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {//定义MybatisplusMybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();//添加具体的分页查询的拦截器interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

 

 ③条件查询以及多条件查询(LambdaQueryWrapper<User>):

@Testvoid tset03(){//方式一//按条件查询,由QueryWrapper对象来实现QueryWrapper wrapper = new QueryWrapper();wrapper.lt("age",20);List<User> userslist = um.selectList(wrapper);System.out.println(userslist);//方式二QueryWrapper<User> wrapper1 = new QueryWrapper<User>();wrapper1.lambda().gt(User::getAge,20);List<User> userslist1 = um.selectList(wrapper1);System.out.println(userslist1);//方式三,主用!!!!LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<User>();lambdaQueryWrapper.gt(User::getAge,25);List<User> userslist2 = um.selectList(lambdaQueryWrapper);System.out.println(userslist2);//链式编程写多条件查询LambdaQueryWrapper<User> lambdaQueryWrapper1 = new LambdaQueryWrapper<User>();//and操作lambdaQueryWrapper1.lt(User::getAge,25).gt(User::getAge,20);//or操作lambdaQueryWrapper1.lt(User::getAge,25).or().gt(User::getAge,20);userslist2 = um.selectList(lambdaQueryWrapper1);System.out.println(userslist2);}

 

④查询投影,分组,排序,范围查询

        //字段筛选wrapper.select("age");//分组wrapper.groupBy("age");//排序wrapper.orderByAsc("age");wrapper.orderByDesc("age");//等值wrapper.eq("age",18);//范围查询gt ge  lt le  eq  betweenwrapper.gt("age",18);//模糊匹配wrapper.likeRight("name","h");wrapper.likeLeft("name","j"); 

 

 ⑤数据库表名与编程变量名映射,控制字段不投影,添加自定义变量

表名: @TableName("user")

字段匹配以及不做字段投影:@TableField(value = 'pwd' ,select = false)

添加属性:@TableField(exist = false)

 

⑥ID自增策略

    @TableId(type = IdType.AUTO)@TableId(type = IdType.ASSIGN_ID)@TableId(type = IdType.INPUT)@TableId(type = IdType.NONE)@TableId(type = IdType.UUID)private Integer id;

雪花ID的组成

表名前缀以及雪花算法的全局配置

#mybatis的配置
mybatis-plus:
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: falsedb-config:id-type: assign_idtable-prefix: tbl_

 

 ⑦多数据操作(BatchIds)

        List<Long> list = new ArrayList<>();//多数据删除um.deleteBatchIds(list);//多数据查询um.selectBatchIds(list);

 

⑧逻辑删除,实现只进行逻辑删除,而不是直接删除数据库中的表数据

添加数据库字段deleted

全局配置

#mybatis的配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: falsedb-config:id-type: assign_id//逻辑删除logic-not-delete-value: 0logic-delete-value: 1

⑨乐观锁:解决多线程并发问题

步骤一:添加数据库字段version

 步骤二:添加字段的@version注解

步骤三:添加拦截器

步骤四:实现

⑩代码生成器

 

Mybatisplus

 特点:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

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

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

相关文章

【C++题解】1632. 需要几辆车

问题&#xff1a;1632. 需要几辆车 类型&#xff1a;分支 题目描述&#xff1a; 学校有 n 位同学要外出旅游&#xff0c;一辆大巴车可以坐 30 人&#xff0c;请问需要几辆大巴车&#xff1f; 输入&#xff1a; 一个整数 n&#xff0c;代表同学的总人数。 输出&#xff1a;…

明日方舟游戏助手:一键完成日常任务 | 开源日报 No.233

MaaAssistantArknights/MaaAssistantArknights Stars: 11.6k License: AGPL-3.0 MaaAssistantArknights 是一款《明日方舟》游戏的小助手&#xff0c;基于图像识别技术&#xff0c;支持一键完成全部日常任务。 刷理智、掉落识别及上传企鹅物流智能基建换班、自动计算干员效率…

STM32 串口打印乱码(Cubemx)

STM32 串口打印乱码&#xff08;Cubemx&#xff09; 时钟配置错误&#xff0c;CubeMX默认的外部晶振是25MHz&#xff0c;而板载的晶振为8MHzSTM32F407修改程序将外部25M晶振修改为8M&#xff08;标准库、HAL库&#xff09; 核心问题 芯片型号与晶振配置&#xff1a;使用的ST…

网络安全-Diffie Hellman密钥协商

密钥协商是保密通信双方&#xff08;或更多方&#xff09;通过公开信道来共同形成密钥的过程。一个密钥协商方案中&#xff0c;密钥的值是某个函数值&#xff0c;其输入量由两个成员&#xff08;或更多方&#xff09;来提供。密钥协商的记过是参与协商的双方&#xff08;或更多…

【linux】Linux第一个小程序-进度条

1. 预备知识&#xff1a;回车和换行 回车&#xff08;Carriage Return&#xff0c;CR&#xff09;&#xff1a; 在早期的机械打字机中&#xff0c;回车指的是将打字机的打印头移回到行首的操作&#xff0c;这样打印头就可以开始新的一行的打印。在ASCII编码中&#xff0c;回车用…

AIGC-stable-diffusion(文本生成图片)+PaddleHub/HuggingFace

功能 stable-diffusion(文本生成图片)PaddleHub&#xff0c;HuggingFace两种调用方式 PaddleHub 环境 pip install paddlepaddle-gpu pip install paddlehub 代码 from PIL import Image import paddlehub as hub module hub.Module(namestable_diffusion)## 保存在demo…

NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图)

NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解&#xff0c;配21张彩图) 1. 简介 本应用笔记描述了与S32G处理器和VR5510 PMIC相关的安全概念。该文档涵盖了S32G和VR5510的安全功能以及它们如何相互作用&#xff0c;以确保对ASIL D安全完整性级别…

STM32,复位和时钟控制

外部时钟 HSE 以后需要用到什么就这样直接拿去配就行了

【文件上传与包含漏洞综合利用】DVWA-文件上传-难度:High

实验过程和结果 步骤1&#xff1a;尝试直接上传php木马&#xff0c;失败&#xff0c;截图如下&#xff1a; 步骤2&#xff1a;将php木马后缀改为jpeg尝试上传&#xff0c;依旧失败&#xff0c;截图如下&#xff1a; 步骤3&#xff1a;将真实的jpeg图片1.jpeg上传&#xff0c;成…

企业微信hook接口协议,ipad协议http,外部联系人图片视频文件下载

外部联系人文件下载 参数名必选类型说明file_id是StringCDNkeyopenim_cdn_authkey是String认证keyaes_key是Stringaes_keysize是int文件大小 请求示例 {"url": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?paramv1_e80c6c6c0cxxxx3544d9…

智慧火电厂合集 | 数字孪生助推能源革命

火电厂在发电领域中扮演着举足轻重的角色。主要通过燃烧如煤、石油或天然气等化石燃料来产生电力。尽管随着可再生能源技术的进步导致其比重有所减少&#xff0c;但直至 2023 年&#xff0c;火电依然是全球主要的电力来源之一。 通过图扑软件自主研发 HT for Web 产品&#xf…

[Algorithm][前缀和][和为K的子数组][和可被K整除的子数组][连续数组][矩阵区域和]详细讲解

目录 1.和为 K 的子数组1.题目链接2.算法原理详解3.代码实现 2.和可被 K 整除的子数组1.题目链接2.算法原理详解3.代码实现 3.连续数组1.题目链接2.算法原理详解3.代码实现 4.矩阵区域和1.题目链接2.算法原理详解3.代码实现 1.和为 K 的子数组 1.题目链接 和为 K 的子数组 2.…

牛客 题解

文章目录 day4_17**BC149** **简写单词**思路&#xff1a;模拟代码&#xff1a; dd爱框框思路&#xff1a;滑动窗口&#xff08;同向双指针&#xff09;代码&#xff1a; 除2&#xff01;思路&#xff1a;模拟贪心堆代码&#xff1a; day4_17 BC149 简写单词 https://www.now…

如何在 Ubuntu 14.04 上配置 StatsD 以收集 Graphite 的任意统计数据

介绍 Graphite 是一个图形库&#xff0c;允许您以灵活和强大的方式可视化不同类型的数据。它通过其他统计收集应用程序发送给它的数据进行图形化。 在之前的指南中&#xff0c;我们讨论了如何安装和配置 Graphite 本身&#xff0c;以及如何安装和配置 collectd 以编译系统和服…

【MATLAB源码-第197期】基于matlab的粒子群算法(PSO)结合人工蜂群算法(ABC)无人机联合卡车配送仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于粒子群优化&#xff08;PSO&#xff09;算法的无人机联合卡车配送系统是一个高效的物流配送策略&#xff0c;旨在优化配送过程中的成本、时间和资源利用率。该系统融合了无人机和卡车的配送能力&#xff0c;通过智能算法…

Tiny11作者开源:利用微软官方镜像制作独属于你的Tiny11镜像

微软对Windows 11的最低硬件要求包括至少4GB的内存、双核处理器和64GB的SSD存储。然而&#xff0c;这些基本要求仅仅能保证用户启动和运行系统&#xff0c;而非流畅使用 为了提升体验&#xff0c;不少用户选择通过精简系统来减轻硬件负担&#xff0c;我们熟知的Tiny11便是其中…

【简单介绍下机器学习之sklearn基础】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【机器学习】深度神经网络(DNN):原理、应用与代码实践

深度神经网络&#xff08;DNN&#xff09;&#xff1a;原理、应用与代码实践 一、深度神经网络&#xff08;DNN&#xff09;的基本原理二、DNN的优缺点分析三、DNN的代码实践四、总结与展望 在人工智能与机器学习的浪潮中&#xff0c;深度神经网络&#xff08;Deep Neural Netw…

演示在一台Windows主机上运行两个Mysql服务器(端口号3306 和 3307),安装步骤详解

目录 在一台Windows主机上运行两个Mysql服务器&#xff0c;安装步骤详解因为演示需要两个 MySQL 服务器终端&#xff0c;我只有一个 3306 端口号的 MySQL 服务器&#xff0c;所以需要再创建一个 3307 的。创建一个3307端口号的MySQL服务器1、复制 mysql 的安装目录2、修改my.in…

安全开发实战(4)--whois与子域名爆破

目录 安全开发专栏 前言 whois查询 子域名 子域名爆破 1.4 whois查询 方式1: 方式2: 1.5 子域名查询 方式1:子域名爆破 1.5.1 One 1.5.2 Two 方式2:其他方式 总结 安全开发专栏 安全开发实战​​http://t.csdnimg.cn/25N7H 前言 whois查询 Whois 查询是一种用…