MybatisPlus的一点了解

news/2024/10/4 7:40:33/文章来源:https://blog.csdn.net/sansheng333/article/details/142317606

1.MybatisPlus使用:

(1)Serializable id 这种参数要怎么传入值,对应的底层调用和数据库表格命名和实体类映射之间有什么关系

在 Java 中,Serializable 是一个标记接口,它表示一个类的实例可以被序列化,即可以被转换为字节流,并可以在网络上传输或者存储到文件中。在 MyBatis-Plus 的 BaseMapper 接口中,Serializable id 通常用于表示实体类的主键字段,这个字段必须实现 Serializable 接口,以便 MyBatis-Plus 能够处理主键。 以下是如何传入 Serializable id 值以及其与数据库表格命名和实体类映射之间关系的解释:

如何传入 Serializable id

  1. 基本数据类型:如果你的主键是基本数据类型(如 intlong 等),可以直接传入值。

    int result = baseMapper.deleteById(1L); // 传入一个 long 类型的主键值
  2. 包装数据类型:如果你的主键是包装数据类型(如 IntegerLong 等),也可以直接传入值。

    int result = baseMapper.deleteById(Integer.valueOf(1)); // 传入一个 Integer 类型的主键值
  3. 自定义主键类型:如果你的主键是一个自定义类型(比如一个 UUID 类型的字符串),你需要传入该类型的实例。

    UUID id = UUID.fromString("123e4567-e89b-12d3-a456-426614174000");
    int result = baseMapper.deleteById(id); // 传入一个 UUID 类型的主键值

底层调用关系

当调用 BaseMapper 的方法,如 deleteById,MyBatis-Plus 会:

  1. 使用反射获取传入的主键值。

  2. 根据实体类的映射配置,构造相应的 SQL 语句。

  3. 通过 MyBatis 的 SQL 会话(SqlSession)执行该 SQL 语句。

数据库表格命名与实体类映射关系

MyBatis-Plus 使用约定优于配置的原则,但也可以通过注解或配置文件进行自定义映射。以下是默认的映射规则:

  1. 表名与类名映射:默认情况下,实体类的类名会被转换为下划线分隔的表名。例如,User 类会被映射到 user 表。

  2. 主键字段映射:默认情况下,实体类中名为 id 的字段会被映射为表的主键字段。

  3. 字段与列映射:实体类中的字段名会被转换为下划线分隔的列名。例如,userName 字段会被映射到 user_name 列。 这些映射可以通过以下方式自定义:

  • @TableName:用于指定实体类对应的表名。

  • @TableId:用于指定实体类中作为主键的字段。

  • @TableField:用于指定实体类中字段与数据库列的映射关系。 例如:

@TableName("sys_user")
public class User {@TableId(type = IdType.AUTO)private Long id;@TableField("user_name")private String userName;// 其他字段...
}

在这个例子中,User 类映射到 sys_user 表,id 字段是主键,并且 userName 字段映射到 user_name 列。当你调用 baseMapper.deleteById(id) 方法时,MyBatis-Plus 会生成并执行类似于 DELETE FROM sys_user WHERE id = ? 的 SQL 语句。

(2).QueryWapper了解——条件构造器

在 MyBatis-Plus 中,QueryWrapper 是一个非常重要的功能类,它用于构建 SQL 查询条件。QueryWrapper 提供了一种链式编程的方式来构造复杂的查询语句,无需手动编写 SQL 语句。以下是 QueryWrapper 的一些核心功能和用法:

功能概述

  • 条件构造:通过 QueryWrapper 可以方便地添加各种查询条件,如等于、不等于、大于、小于、模糊查询等。

  • 实体包装:可以直接传入实体对象,QueryWrapper 会根据实体类的字段及其注解自动构造查询条件。

  • 自定义 SQL:除了链式方法外,还可以直接在 QueryWrapper 中写入自定义的 SQL 语句。

  • 嵌套查询:支持嵌套查询,可以构建复杂的查询逻辑。

常用方法

以下是一些 QueryWrapper 的常用方法:

  • eq(String column, Object val):添加等于条件。

  • ne(String column, Object val):添加不等于条件。

  • gt(String column, Object val):添加大于条件。

  • ge(String column, Object val):添加大于等于条件。

  • lt(String column, Object val):添加小于条件。

  • le(String column, Object val):添加小于等于条件。

  • like(String column, Object val):添加模糊查询条件。

  • in(String column, Collection<?> values):添加 IN 查询条件。

  • and(Consumer<QueryWrapper<T>> consumer):添加 AND 嵌套条件。

  • or(Consumer<QueryWrapper<T>> consumer):添加 OR 嵌套条件。

  • orderByDesc(String column):添加降序排序。

  • orderByAsc(String column):添加升序排序。

使用示例

以下是一个简单的 QueryWrapper 使用示例:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三")  // 查询名字等于张三的用户.between("age", 18, 30)  // 并且年龄在18到30岁之间.like("email", "example.com");  // 并且邮箱包含"example.com"
List<User> users = userMapper.selectList(queryWrapper);

在这个例子中,QueryWrapper 被用来构建一个查询,它查找名字为“张三”,年龄在18到30岁之间,且邮箱包含“example.com”的所有用户。 通过 QueryWrapper,MyBatis-Plus 可以自动生成对应的 SQL 语句,无需开发者手动编写,从而简化了数据库操作,并提高了开发效率。

(3)条件查询
//常用示例QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.like("username", "h") // 模糊查询——中间 %${   }%.notLike("column","val") //not Like %${ }%.likeLeft("column","val")   //%${  }.likeRight("column","val")  //${  }%.ge("column","val")  //<=.isNotNull("column") //不为空.or() //后面一个条件合并为or   //常规默认为and// or里面包含自己的条件时,拼接or里面条件为or,后面默认还是and.eq("sex","女"); //相等

QueryWapper——子查询——insql(column,“sql语句”)——一般是id对应查找

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

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

相关文章

AI客服机器人开启企业客户服务新纪元

随着人工智能(AI)技术的迅猛发展&#xff0c;使得AI客服机器人走进了我们的视野&#xff0c;成为提高客户满意度和业务效率的不二法宝。这些智能机器人不仅能够处理海量信息&#xff0c;还能为客户提供个性化的服务体验。 一、AI客服机器人的基本原理 AI客服机器人是基于人工智…

TCP并发服务器的实现

一请求一线程 问题 当客户端数量较多时&#xff0c;使用单独线程为每个客户端处理请求可能导致系统资源的消耗过大和性能瓶颈。 资源消耗&#xff1a; 线程创建和管理开销&#xff1a;每个线程都有其创建和销毁的开销&#xff0c;特别是在高并发环境中&#xff0c;这种开销…

MySQL高阶1777-每家商店的产品价格

题目 找出每种产品在各个商店中的价格。 可以以 任何顺序 输出结果。 准备数据 create database csdn; use csdn;Create table If Not Exists Products (product_id int, store ENUM(store1, store2, store3), price int); Truncate table Products; insert into Products …

ZYNQ FPGA自学笔记~点亮LED

一 ZYNQ FPGA简介 ZYNQ FPGA主要特点是包含了完整的ARM处理系统&#xff0c;内部包含了内存控制器和大量的外设&#xff0c;且可独立于可编程逻辑单元&#xff0c;下图中的ARM内核为 ARM Cortex™-A9&#xff0c;ZYNQ FPGA包含两大功能块&#xff0c;处理系统Processing System…

十款主流的供应链管理系统盘点,优缺点一目了然!

本文将盘点十款供应链管理系统&#xff0c;为企业选型提供参考&#xff01; 想象一下&#xff0c;一家企业在生产和销售产品的过程中&#xff0c;原材料供应不及时、库存积压严重、物流配送混乱。这时&#xff0c;供应链管理系统就如同一位高效的指挥家&#xff0c;将各个环节紧…

Hazel 2024

不喜欢游戏的人也可以做引擎&#xff0c;比如 cherno 引擎的作用主要是有两点&#xff1a; 将数据可视化交互 当然有些引擎的功能也包含有制作数据文件&#xff0c;称之为资产 assets 不做窗口类的应用栈&#xff0c;可能要花一年才能做一个能实际使用的应用&#xff0c;只需…

web知识

sql注入的万能密码:1’ or true#如果页面没有什么东西可见&#xff0c;首先可以用diresearch看看有没有什么隐藏的目录&#xff0c;或者检查源代码&#xff0c;如果这些都没成功可以用 dirsearch如果没有找到东西&#xff0c;可能需要调低线程 dirsearch.py -u url -e * --ti…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量和小型系统三方库移植指南…

模型部署基础

神经网络的模型部署是将训练好的神经网络模型应用到实际系统中&#xff0c;以实现预测、分类、推荐等任务的过程。下图展示了模型从训练到部署的整个流程&#xff1a; 1.模型部署的平台 在线服务器端部署 在线服务器端部署适用于处理大模型、需要精度优先的应用场景&#xff…

[C++进阶[六]]list的相关接口模拟实现

1.前言 本章重点 在list模拟实现的过程中&#xff0c;主要是感受list的迭代器的相关实现&#xff0c;这是本节的重点和难点。 2.list接口的大致框架 list是一个双向循环链表&#xff0c;所以在实现list之前&#xff0c;要先构建一个节点类 template <class T> struct L…

使用PyTorch进行图像风格迁移:基于VGG19实现

图像风格迁移&#xff08;Neural Style Transfer, NST&#xff09;是深度学习中一个令人着迷的应用&#xff0c;它能够将一张图像的风格应用到另一张图像上。例如&#xff0c;能够将梵高的画风应用到一张普通照片上。本文将详细解释如何使用PyTorch进行风格迁移&#xff0c;逐步…

第十二周:机器学习笔记

第十二周周报 摘要Abstract机器学习1. Recurrent Neural Network&#xff08;下&#xff09;1.1 RNN的Loss Function怎么求&#xff1f;1.2 RNN奇怪的特性1.3 如何解决 RNN 梯度消失或者爆炸1.4 RNN 其他应用 Pytorch学习1. 现有的网络模型使用以及其修改1.1 在VGG16模型添加Mo…

Mybatis+Druid+MybatisPlus多数据源配置

MybatisDruidMybatisPlus多数据源配置 平常我们使用的是 properties 或者 yaml 来配置数据库的地址、用户名、密码等 但是这样只能配置一个数据源 现在我们想在一个项目里面配置多个数据源&#xff0c;那么我们就需要配置自己的配置类 配置类和配置文件 Mybatismysqldruid配置…

硬件工程师笔试面试——开关

目录 11、开关 11.1 基础 开关原理图 开关实物图 11.1.1 概念 11.1.2 常见的开关类型及其应用 11.2 相关问题 11.2.1 开关的工作原理是什么? 11.2.2 在设计一个电子系统时,如何选择最适合的开关类型? 11.2.3 不同类型的开关在实际应用中有哪些优势和局限性? 11.…

HarmonyOS 速记

目录 装饰器Entry(入口)Component(组件)State(状态)Prop(属性)Preview(预览)PreviewerInspector 结构体structbuild自定义组件自定义 Custom 组件 容器Row(行) & Column(列)RelativeContainer(相对布局容器)marginpaddingSwiper(轮播图)Grid(网格容器)List(列表) 组件Image…

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网&#xff0c;可以使用Windows远程桌面传输文件&#xff0c;或者使用远程看看这款免费的远程桌面软件&#xff0c;它支持在不同的网络之间传输文件&#xff0c;而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(上)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案…

基础 Web 开发

1. 构建项目&#xff1a; 2.添加依赖 <dependencies> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupI…

2024 年浙江省网络安全行业网络安全运维工程师项目 职业技能竞赛网络安全运维工程师(决赛样题)

2024年浙江省网络安全行业网络安全运维工程师项目 职业技能竞赛网络安全运维工程师&#xff08;决赛样题&#xff09; 应急响应&#xff1a;1 通过流量分析&#xff0c;找到攻击者的 IP 地址2 找到攻击者下载的恶意文件的 32 位小写 md5 值3 找到攻击者登录后台的 URI4 找到攻击…

如何用安卓玩Java版Minecraft,安卓手机安装我的世界Java版游戏的教程

安卓手机使用FCL启动器安装我的世界Java版游戏的教程。如何用安卓玩Java版Minecraft 视频教程&#xff1a;https://www.bilibili.com/video/BV1CctYebEzR/ 前言 目前&#xff0c;安卓设备上可以用来运行Java版Minecraft的启动器主要有以下几款&#xff1a; PojavLauncher&a…