[SpringBoot]MyBatis Plus框架使用selectCount

news2025/1/13 3:21:29

目录

MyBatis Plus介绍

CRUD操作使用 

添加依赖: 

接口应该继承自BaseMapper

在继承自BaseMapper的泛型实体类上使用@TableName注解指定数据表的名称

在类中与主键对应的属性上使用@TableId注解指定主键的值如何处理

 另外,原本应该做的配置不变,例如在配置类中使用@MapperScan指定Mapper接口所在的包。

使用selectCount


 

MyBatis Plus介绍

MyBatis Plus是一个基于MyBatis的增强工具,它简化了MyBatis的开发流程,提供了更便捷、高效的数据库访问解决方案。MyBatis Plus在保留了MyBatis核心特性的基础上,提供了许多额外的功能和扩展,使得开发者可以更快速地编写数据库操作代码。

以下是MyBatis Plus的一些主要特性:

  1. 简化的CRUD操作:MyBatis Plus提供了丰富的CRUD操作方法,可以通过简单的接口方法完成常见的增删改查操作,无需编写SQL语句。

  2. 条件构造器:MyBatis Plus提供了强大的条件构造器,可以灵活地构建查询条件,支持链式调用,可读性强。

  3. 分页查询:MyBatis Plus内置了分页查询的支持,可以方便地进行分页查询操作。

  4. 代码生成器:MyBatis Plus提供了代码生成器工具,可以根据数据库表结构自动生成实体类、Mapper接口和XML映射文件,减少重复的编写工作。

  5. 乐观锁支持:MyBatis Plus支持乐观锁的使用,可以通过版本号等方式实现并发控制。

  6. 自动填充字段:MyBatis Plus支持自动填充字段,可以在插入和更新操作时自动填充某些字段的值,如创建时间、更新时间等。

  7. 多租户支持:MyBatis Plus提供了多租户的支持,可以在同一个数据库中实现租户数据的隔离和管理。

总体来说,MyBatis Plus简化了数据库操作的编写和维护工作,提高了开发效率,减少了重复性的代码编写。它与MyBatis完美集成,可以充分发挥MyBatis的灵活性和性能优势,是Java开发中常用的持久层框架之一。

CRUD操作使用 

添加依赖: 

<mybatis-plus-spring-boot.version>3.3.0</mybatis-plus-spring-boot.version>
<!-- Mybatis Plus整合Spring Boot的依赖项 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus-spring-boot.version}</version>
</dependency>

接口应该继承自BaseMapper

使用普通的MyBatis相同,需要自定义数据访问接口,不同的是,此接口应该继承自BaseMapper,且继承的泛型应该是尝试处理的数据表所对应的实体类的类型,例如:
 

同时继承之后继承的已有方法都不需要我们在写mapper接口写抽象方法了,对应的mapper的xml文件的sql语句也不需要在写了,但自己想写一些它没有的或者你不想用它的也是可以写的。但一般增删改以及selectCount用的比较多,其他查询还是自己写好做优化。

在继承自BaseMapper的泛型实体类上使用@TableName注解指定数据表的名称

  • 例如配置为@TableName("pms_album")

  • 如果没有通过以上注解指定名称,则MyBatis Plus会自动根据你的实现类的名称转换得到表名称,例如Album类对应的默认的表名称就是album
     

在类中与主键对应的属性上使用@TableId注解指定主键的值如何处理

  • 例如配置为@TableId(type = IdType.AUTO)

  • 如果没有通过以上注解进行配置,则MyBatis Plus默认会自动处理主键字段对应的值

 另外,原本应该做的配置不变,例如在配置类中使用@MapperScan指定Mapper接口所在的包。


使用selectCount

因为使用mybatis plus的 selectCount查询需要填入的是wapper<T>类型。
需要用到它的子集QueryWrapper,作用是设计sql语句WHERE的规则,如果要设计名称等于多少,就用eq,equals的意思,双引号“username”是需要的数据库里面的字段,匹配参数里面的adminAddNewParam.getUsername()。  等同于sql语句WHERE  username=#{username}

用int countByUsername就能得到结果。

 public void addNew(AdminAddNewParam adminAddNewParam) {
        log.debug("开始处理【添加管理员】的业务,参数:{}", adminAddNewParam);
        // 检查管理员用户名是否被占用,如果被占用,则抛出异常
        QueryWrapper<Admin> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", adminAddNewParam.getUsername());
        int countByUsername = adminMapper.selectCount(queryWrapper);
        log.debug("根据管理员用户名统计匹配的管理员数量,结果:{}", countByUsername);
        if (countByUsername > 0) {
            String message = "添加管理员失败,用户名已经被占用!";
            log.warn(message);
            throw new ServiceException(ServiceCode.ERR_CONFLICT, message);
        }
}

 

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

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

相关文章

OPC UA 云端模型库

UA 云库&#xff08;opc ua cloud library&#xff09;是互联网上可用的中央库&#xff0c;可以在其中上传配套规范 &#xff08;CS&#xff09; 并将其提供给其他人。许多CS是由OPC基金会的联合工作组开发和发布的。来自不同行业和应用领域的几位专家共同努力&#xff0c;为许…

水库大坝安全监测具体内容

水库大坝实时监测的主要任务是实时监测各个监测点水库水位、水压、渗流、流量、扬压力等&#xff0c;用无线传感网络完成数据传输&#xff0c;在计算机上用数据模式或图形模式反映出来&#xff0c;实时掌控整个水库大坝各项变化情况&#xff0c;特殊数据实行声光报警。大坝安全…

面试官:深拷贝与浅拷贝有啥区别?

文章目录 1.前言2.基本类型的拷贝3.引用类型的拷贝3.1 关于引用类型的浅拷贝3.2 关于引用类型的深拷贝 1.前言 首先&#xff0c;明确一点深拷贝和浅拷贝是针对对象属性为对象的&#xff0c;因为基本数据类型在进行赋值操作时&#xff08;也就是拷贝&#xff09;是直接将值赋给…

官宣!Databend 和 XSKY星辰天合达成合作

近日&#xff0c;北京数变科技有限公司与北京星辰天合科技股份有限公司完成了产品兼容性适配互认证。 本次测试是对 Databend 云原生数据仓库平台与星辰天合企业级存储产品&超融合产品进行严格的联合测试验证&#xff0c;结果显示&#xff0c;双方产品完全兼容&#xff0c;…

日撸java三百行day58

文章目录 说明Day58 符号型数据的 NB 算法1.基础理论知识1.1 条件概率1.2 独立性假设1.3 Laplacian 平滑 2. 符号型数据的预测算法跟踪2.1 testNominal()方法2.1.1 NaiveBayes 构造函数2.1.2 calculateClassDistribution()2.1.3 calculateConditionalProbabilities()方法2.1.4 …

STM32F4_SPI协议详解

目录 1. 什么是SPI 2. SPI物理层 3. SPI协议层 3.1 SPI基本通讯过程 3.2 数据有效性 3.3 CPOL/CPHA及通讯模式 4. SPI框图及通讯过程 4.1 SPI框图 4.2 通讯过程 5. SPI初始化结构体 6. Flash芯片(W25Q128)简介 7. 库函数配置SPI1的主模式 8. 实验程序 8.1 实验程…

“金九银十”是找工作的最佳时期吗?那倒未必

金九银十找工作 优势&#xff1a; 供选择的公司多&#xff0c;机会多 劣势&#xff1a; 人才供应量旺盛 成为备胎的几率大增&#xff0c;获取offer的时间较慢 若无明显竞争力&#xff0c;薪资涨幅相对不会太高 比起那些在跳槽季(金三银四&#xff0c;金九银十)扎堆找工作…

【LED子系统深度剖析】九、数据结构详解(番外篇)

个人主页:董哥聊技术 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、核心数据结构1.1 gpio_led_platform_data1.2 gpio_leds_priv1.3 gpio_led1.4 gpi…

2022年营收31.88亿,国产模拟 IC 头部企业持续扩充品类促发展

国产IC增速快于全球 IC &#xff0c; 国产替代空间广阔 根据 WSTS 的数据&#xff0c;2021 年全球 IC 市场规模高增 28.2%&#xff0c;2022 年全球 IC 市场规模同比增速放缓至 3.7%&#xff0c;由于需求减弱&#xff0c;且全球各下游仍在消化库存&#xff0c;预计 2023 年全球…

浮点数在内存中的存储以及用指针改变内存与强制转换的区别

文章目录 浮点型在内存中的存储引例浮点数的表示形式浮点数的存储E不全为零且E不全为1E全为0E全为1 Eg 总结用指针改变内存和强制转换的区别 浮点型在内存中的存储 引例 我们先来看下面一段代码 #include<stdio.h>int main() {int n 9;float* pFloat (float*)&n;p…

【来不及刷题之】33、合并区间(+ 删除被覆盖区间)

1. 删除被覆盖区间 先来看与合并区间比较相似的一道题目&#xff1a;删除被覆盖的区间 思路&#xff1a; 起点按照升序排序&#xff0c;终点按照降序排序基于以上排序规则&#xff0c;相邻的两个区间会有以下三种情况&#xff1a; 第一种情况&#xff1a;找到一个覆盖区间&a…

axios封装时对config参数的一点思考

目 录 0、起因1、冷静分析2、一个简单粗糙但是能用的封装 0、起因 创建一个实例&#xff1a; const service axios.create({baseURL: "/api",timeout: 3e3,withCredentials: true,headers:{"Content-Type": "application/json"} })简单封装&a…

STM32控制OLED介绍

OLED&#xff0c;即有机发光二极管&#xff08;Organic Light-Emitting Diode&#xff09;&#xff0c;又称为有机电激光显示&#xff08;Organic Electroluminesence Display&#xff0c; OELD&#xff09;。 OLED 由于同时具备自发光&#xff0c;不需背光源、对比度高、 厚度…

人工智能(pytorch)搭建模型7-利用pytorch搭建一个BiLSTM+CRF模型,实现简单的命名实体识别

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型7-利用pytorch搭建一个BiLSTMCRF模型&#xff0c;实现简单的命名实体识别&#xff0c;BiLSTMCRF 模型是一种常用的序列标注算法&#xff0c;可用于词性标注、分词、命名实体识别等任务。本…

软件安全概述

软件定义是&#xff1a;计算机程序、规则和可能相关的文档。 软件是程序、数据和文档的集合体。 零日漏洞、零日攻击 零日漏洞是指未被公开披露的软件漏洞&#xff0c;没有给软件的作者或厂商以时间去为漏洞打补丁或是给出建议解决方案&#xff0c;从而攻击者能够利用这种漏洞破…

ROS:话题消息(Message)的定义与使用

目录 一、话题模型二、自定义话题消息2.1定义msg文件2.2在package.xml中添加功能包依赖2.3在CMakeLists.txt中添加编译选项2.4编译生成C头文件或Python库 三、创建代码并编译运行&#xff08;C&#xff09;3.1创建代码3.2编译 四、运行 一、话题模型 自定义一个消息类型“Pers…

python接口测试之测试报告

在本文章中&#xff0c;主要使用jenkins和编写的自动化测试代码&#xff0c;来生成漂亮的测试报告&#xff0c;关于什么是CI这些我就不详细的介绍了&#xff0c;这里我们主要是实战为主。 首先搭建java的环境&#xff0c;这个这里不做介绍。搭建好java的环境后&#xff0c;在h…

Python:Python编程:从入门到实践__超清版:Python标准库:线程

Python线程与安全 实现线程安全有多重方式&#xff0c;常见的包括&#xff1a;锁&#xff0c;条件变量&#xff0c;原子操作&#xff0c;线程本地存储等。 &#x1f49a; 1. 锁2. 条件变量3. 通过 join 阻塞当前线程4. 采用 sleep 来休眠一段时间5. 原子操作5.1 使用 threading…

【I2C】Linux I2C子系统分析

文章目录 一、I2C体系架构二、主要的结构体1. i2c_adapter2. i2c_algorithm3. i2c_driver4. i2c_client4.1 方式一&#xff1a;通过I2C bus number静态方式来创建4.2 方式二&#xff1a;通过Device Tree来创建4.3 方式三&#xff1a;直接通过i2c_new_device来创建4.3 方式四&am…

openEuler22.03制作openstack平台使用的镜像

系列文章目录 第一章 openEuler22.03制作openstack平台使用的镜像 文章目录 系列文章目录前言一、virt-manager上的准备工作1、网卡类型切换为virtio2、IDE驱动设置成Virtio3、Display设置成vnc3、虚拟机系统分区 二、安装普通工具包三、安装云化工具包1、安装工具包2、修改配…