【MyBatisPlus】MyBatisPlus介绍与使用

【MyBatisPlus】MyBatisPlus介绍与使用


文章目录

      • 【MyBatisPlus】MyBatisPlus介绍与使用
        • 1、什么MyBatisPlus
        • 2、MyBatisPlus的CRUD操作
        • 3、MyBatisPlus分页使用

1、什么MyBatisPlus

MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率

  • 官网:https://baomidou.com/

MyBatisPlus特性:

  • 无侵入:只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作(如果只做单表增删查改不需要你写任何的sql)
  • 支持 Lambda:编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件
  • ……

常见的开发方式:

  • 基于MyBatis使用MyBatisPlus
  • 基于Spring使用MyBatisPlus
  • 基于SpringBoot使用MyBatisPlus
2、MyBatisPlus的CRUD操作

使用mybatisplus的步骤

1. 导入mp的启动器
2. 编写application.yml文件,配置数据源,打印日志
3. 编写mapper接口,Mapper接口需要基础BaseMapper接口,BaseMapper接口需要指定操作的是哪个实体类。
4. 在启动类中扫描的Mapper包
5. 测试使用

正如官网所言:mybatis-plus在mybatis的基础上只做增强不做改变,因此只需把mybatis的依赖换成mybatis-plus的依赖

      <!-- mybatis-plus的驱动包 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>
</dependency>

**注意:**这是mybatis-plus依赖,真正使用起来肯定是根据项目添加,如:mysql驱动、lombok等。

编写application.yml文件,配置数据源

mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true

编写mapper接口,Mapper接口需要基础BaseMapper接口,BaseMapper接口需要指定操作的是哪个实体类。

public interface UserMapper extends BaseMapper<User> { //这里操作的是User这个实体类}

mybatis-plus为我们提供了一些标准数据层的CRUD功能,这些功能省去了我们自定义接口,也与我们自定义接口有部分差异,如下表:

功能自定义接口MP接口
新增boolean save(T t)int insert(T t)
删除boolean delete(int id)int deleteById(Serializable id)
修改boolean update(T t)int updateById(T t)
根据id查询T getById(int id)T selectById(Serializable id)
查询全部List getAll()List selectList()
分页查询PageInfo getAll(int page, int size)IPage selectPage(IPage page)
按条件查询List getAll(Condition condition)IPage selectPage(Wrapper queryWrapper)

新增

    /*** 增加*/@Testpublic void testInsert(){User user = new User();user.setName("小林");user.setGender("男");user.setPassword("root");user.setAge(19);user.setTel("18000110011");userMapper.insert(user);}

删除

    /*** 删除*/@Testpublic void testRemove(){userMapper.deleteById(1480751909521403906L);}

更新

    /*** 更新*/@Testpublic void testUpdate(){User user =new User();user.setId(7L);user.setName("张小炮");  //注意: 生成update语句设置的字段为非空字段。userMapper.updateById(user); //update user set xx=xx ,xxx=xx ,xx=xx where id =xx}

查询全部

    @Testpublic void testUserList(){List<User> users = userMapper.selectList(null);for (User user : users) {System.out.println(user);}}

条件查询

    /*** 条件查询*/@Testpublic void testFindByCondition(){//QueryWrapper代表就是条件QueryWrapper<User> queryWrapper  = new QueryWrapper<>();//添加条件//queryWrapper.lt()  greater than 小于//queryWrapper.le()  greater equal 小于等于//queryWrapper.ge()  greater equal 大于等于//queryWrapper.eq()  equal 等于//queryWrapper.gt()  greater than 大于queryWrapper.gt("age",18);List<User> userList = userMapper.selectList(queryWrapper);System.out.println("用户列表:"+ userList);}
3、MyBatisPlus分页使用
功能MP接口
分页查询IPage selectPage(IPage page)

如果需要使用到mybatis-plus的分页功能,必须存在一个配置类该配置类创建Mybatis的拦截器,这个拦截器的作用就是在你执行selectPage的方法的时候对sql进行拦截,然后拼接limit语句实现分页。

设置分页拦截器作为Spring管理的bean

  1. 在config包下创建一个配置类:MybatisPlusConfig
  2. 在类上添加@Configuration
  3. 编写方法
    1. 方法上使用@Bean注解:添加MybatisPlusInterceptor对象到容器中
    2. 创建MybatisPlusInterceptor拦截器对象
    3. 添加内部分页拦截器:创建PaginationInnerInterceptor
@Configuration
public class MybatisPlusInterceptorConfig {/*** 创建MybatisPlusInterceptor拦截器封装里面分页拦截器PaginationInnerInterceptor* 作用:实现对mp内置分页方法拦截增强,实现分页2条sql语句原理* @return*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
}

在测试类中执行分页查询

  1. 创建分页对象,前面是接口IPage,后面是实现类Page(第几页,每页大小)
  2. 调用selectPage方法,传入page对象,无需接收返回值
  3. 获取分页结果
    @Testpublic void testPage(){//查询第一页,每页3条数据//1、创建Page对象,构造函数传入当前页码和每页显示多少条数据Page<User> page = new Page<>(1, 3); //当前页1  页面大小是3//2、执行selectPage方法page = userMapper.selectPage(page,null);//3、获取分页数据System.out.println("总条数:" + page.getTotal());List<User> records = page.getRecords();for (User record : records) {System.out.println(record);}//4、获取当前页System.out.println("当前页:" + page.getCurrent());System.out.println("每页大小:" + page.getSize());}

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

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

相关文章

CRM系统主要是干什么?CRM系统主要功能和作用

什么是CRM 系统&#xff1f;CRM系统到底是干什么的&#xff1f;不同的企业人员该如何利用CRM去解决他们的问题等等&#xff0c;问题太多了&#xff0c;今天来为大家详细介绍。 干货满满&#xff0c;建议收藏&#xff01;&#xff01; 首先第一个问题&#xff0c;什么是CRM系统…

uniapp 小程序运行报错plus...

plus.XXX方法是针对Android安卓的 解决方式&#xff1a; 在有关代码内添加 #ifdef APP-PLUS // #ifdef APP-PLUS ... 代码块 ....// #endif

Linux 服务查询命令(包括 服务器、cpu、数据库、中间件)

Linux 服务查询命令&#xff08;包括 服务器、cpu、数据库、中间件&#xff09; Linux获取当前服务器ipLinux使用的是麒麟版本还是cenos版本Linux获取系统信息Linux查询nignx版本 Linux获取当前服务器ip hostname -ILinux使用的是麒麟版本还是cenos版本 这个文件通常包含有关L…

达梦数据库备份还原bak

s1.–关闭数据库 2.–数据库还原&#xff1a; 到数据库bin下 执行 /dmrman RESTORE DATABASE /dm/data/xx/dm.ini FROM BACKUPSET /dm/data/backup/DB_xxx_FULL_2024_06_02_23_00_04;3.–数据库恢复&#xff1a; ./dmrman RECOVER DATABASE /dm/data/tjwater/dm.ini FROM BACKU…

ctfshow jwt web入门

jwt令牌由三部分组成&#xff0c;由.分割 Header Payload Signatureheader示例 {typ: JWT,alg: HS256 }# typ&#xff1a;声明类型 # alg&#xff1a;声明加密的算法 通常直接使用 HMAC SHA256 需要注意的是因为header部分是固定的所以&#xff0c;生成的base64也是固定的以ey…

20、matlab信号波形生成:狄利克雷函数、高斯脉冲和高斯脉冲序列

1、狄利克雷函数生成波形diric()函数 语法&#xff1a;y diric(x,n) 返回n次的狄利克雷函数对输入数组x的元素求值。 1&#xff09;diric()函数 代码 x linspace(-2*pi,2*pi,301);%定义x取值 d6 diric(x,6); d7 diric(x,7); subplot(2,1,1) plot(x,d6) ylabel(n 6) tit…

C++中的‘friend‘关键字

目录 友元函数&#xff08;Friend Function&#xff09; 友元类&#xff08;Friend Class&#xff09; 友元函数模板&#xff08;Friend Function Template&#xff09; 友元类模板&#xff08;Friend Class Template&#xff09; 总结 摘要 在 C 中&#xff0c;friend 关…

英伟达算力芯片为什么能够“一统天下”

英伟达算力芯片能够一统天下&#xff0c;主要归因于以下几个关键因素&#xff1a; 技术创新与产品优势&#xff1a; 英伟达自1993年成立以来&#xff0c;一直在GPU和AI芯片领域进行持续的技术创新。特别是随着深度神经网络技术的突破&#xff0c;英伟达借助CUDA平台在人工智能…

湖南源点(市场研究)咨询 有效的市场调研是商业定位的基础

本文由湖南&#xff08;市场调研&#xff09;源点咨询编辑发布 近20年&#xff0c;中国购物中心井喷式的发展&#xff0c;经营面积几何倍的增长&#xff0c;但在现今竞争如此激烈的商业环境中&#xff0c;消费者的消费信心不足&#xff0c;购物中心同质化严重&#xff0c;经营…

C语言题目:求具有abcd=(ab+cd)^2性质的四位数

题目描述 3025这个数具有一种独特的性质&#xff1a;将它平分为二段&#xff0c;即30和25&#xff0c;使之相加后求平方&#xff0c;即(3025)2&#xff0c;恰好等于3025本身。请求出具有这样性质的全部四位数 输入格式 无 输出格式 满足题意的数全部四位数(从小到大输出,且…

mybatis执行自定义sql

背景 在开发过程中遇到一个需求&#xff1a;希望从数据库中读取预先定义好的sql&#xff0c;根据传参进行参数预处理后执行sql语句。结合项目实际情况我决定使用mybatis执行预定义sql。 实现过程 缓存我们自定义的sql语句 MappedStatement ms new MappedStatement.Builder(co…

flyfish3.0.0配置避坑

1.基础环境准备篇 doc/01-基础环境准备篇.md 云智慧/FlyFish - Gitee.com 使用教程里给出的java环境时&#xff0c;可以显示java版本&#xff0c;但是不能显示Maven的版本 改为&#xff1a; export NODE_HOME/usr/local/node/node-v14.19.3-linux-x64 export PATH$NODE_HOME…

【面试题-006】java中的垃圾回算法有哪些?

Java中的垃圾回收&#xff08;Garbage Collection&#xff0c;简称GC&#xff09;是指自动内存管理的一种机制&#xff0c;用于回收不再使用的对象占用的内存。Java中的垃圾回收算法主要有以下几种&#xff1a; 标记-清除&#xff08;Mark-Sweep&#xff09;算法&#xff1a; …

WebSocket 断网重连、心跳检测功能封装

文章目录 简介特点优缺点使用场景 用法封装断网重连心跳检测 注意 简介 WebSocket是一种用于在Web浏览器和服务器之间进行双向通信的协议。它提供了一种在单个TCP连接上进行持久化的全双工通信能力。WebSocket协议通过在HTTP握手阶段升级到WebSocket连接&#xff0c;从而允许双…

100页2秒?我们为什么需要这样的文档解析速度

近期&#xff0c;TextIn通用文档解析完成最新一版产品迭代&#xff0c;将100页文档解析速度提升至最快2秒以内。 P50&#xff08;百页&#xff09; P90&#xff08;百页&#xff09; P95&#xff08;百页&#xff09; P99&#xff08;百页&#xff09; 平均&#xff08;单页…

记某网关系统通用漏洞的挖掘

前言 本篇文章分享一下通用漏洞挖掘的过程&#xff0c;想要获得通用漏洞证书&#xff0c;首先要求是中危及中危以上的通用型漏洞且所属公司的注册资本大于5000万。挖掘一个漏洞其实不难&#xff0c;个人觉得是目标公司资产的搜集。访问CNVD平台发现某网关系统被师傅提交过任意…

陈文自媒体:人生的管道收入,你搭建了几条?

今天不讲行业的内容&#xff0c;今天说说一下人生的一些规划&#xff0c;可能有人说&#xff0c;现在社会变化这么快&#xff0c;谈啥规划&#xff0c;那不是笑话嘛&#xff1f; 其实我想说&#xff0c;提前规划比没有规划&#xff0c;效果完全不一样&#xff0c; 是的社会变化…

V神的傲慢与偏见

原创 | 刘教链 隔夜BTC&#xff08;比特币&#xff09;小幅回升至5日线67.7k附近。前日5.31教链内参“美核心通胀放缓&#xff0c;利好宽松周期落地”[链接]提到&#xff0c;以太坊创始人Vitalik Buterin&#xff08;V神&#xff09;新发表了一篇长文&#xff0c;主题是关于他“…

Java反射机制:深入探讨与实际应用

Java反射机制&#xff1a;深入探讨与实际应用 引言 反射机制是Java语言的重要特性之一&#xff0c;它允许程序在运行时检查和操作自身的结构。通过反射&#xff0c;开发者可以在运行时动态地获取类的详细信息&#xff0c;创建对象&#xff0c;调用方法&#xff0c;甚至修改字…

H6911 DC2.6-40V升压IC 升24V36V48V60V80V100V10A数转模无频闪LED芯片

H6911 DC2.6-40V升压IC是一款升压恒流LED恒流驱动器&#xff0c;具有多种特点&#xff0c;适用于多种的LED照明应用领域。以下是关于该产品的详细解释&#xff1a; 一、产品概述 H6911是一款专为LED照明设计的升压恒流驱动器。它能在2.6至40V的宽电压范围内稳定工作&#xff0c…