MybatisPlus的一点了解

embedded/2024/9/23 2:35:15/

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:用于指定实体类中字段与数据库列的映射关系。 例如:

java">@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 使用示例:

java">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)条件查询
java">//常用示例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.ppmy.cn/embedded/113461.html

相关文章

后端开发刷题 | 最长上升子序列

描述 给定一个长度为 n 的数组 arr&#xff0c;求它的最长严格上升子序列的长度。 所谓子序列&#xff0c;指一个数组删掉一些数&#xff08;也可以不删&#xff09;之后&#xff0c;形成的新数组。例如 [1,5,3,7,3] 数组&#xff0c;其子序列有&#xff1a;[1,3,3]、[7] 等。…

【Java Bean Validation API】Spring3 集成 Bean 参数校验框架

Spring3 集成 Bean 参数校验框架 Java Bean Validation API 1. 依赖 Spring 版本&#xff1a;3.0.5 Java 版本&#xff1a;jdk21 检验框架依赖&#xff08;也可能不需要&#xff0c;在前面 spring 的启动依赖里就有&#xff09;&#xff1a; <!-- 自定义验证注解 -->…

Excel数据转置|Excel数据旋转90°

Excel数据转置|Excel数据旋转90 将需要转置的数据复制在旁边空格处点击鼠标右键&#xff0c;选择图中转置按钮&#xff0c;即可完成数据的转置。&#xff01;&#xff01;&#xff01;&#xff01;非常有用啊啊啊&#xff01;&#xff01;&#xff01;

846. 树的重心

846. 树的重心 给定一颗树&#xff0c;树中包含 n个结点&#xff08;编号 1∼n&#xff09;和 n−1条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树中的一个结点&#xff0c;如果将这个…

大厂校招:唯品会Java面试题及参考答案

SortedSet 的原理 SortedSet 是一个有序的集合接口,它继承自 Set 接口。在 Java 中,常见的实现类有 TreeSet。 TreeSet 实现了 SortedSet 接口,它使用红黑树来维护集合中元素的有序性。红黑树是一种自平衡的二叉搜索树,具有以下特点: 每个节点要么是红色,要么是黑色。根节…

GPU加速生物信息分析的尝试

GPU工具分类 实话实说&#xff0c;暂时只有英伟达的GPU才能实现比较方便的基因组分析集成化解决方案&#xff0c;其他卡还需要努力呀&#xff0c;或者需要商业公司或学术团体的努力开发呀&#xff01;FPGA等这种专用卡的解决方案也是有的&#xff0c;比如某测序仪厂家&#xf…

除氟剂的介绍及用途

除氟剂是一种广泛应用于水处理和环保领域的重要化学品&#xff0c;其主要功能是通过与水体中的氟离子发生化学反应&#xff0c;将其转化为无害的物质&#xff0c;从而去除水中的氟含量。以下是对除氟剂的详细介绍和用途分析&#xff1a; 一、除氟剂介绍 种类与形态&#xff1a…

彩漩科技亮相企业出海峰会,展示智能办公新力量

近日&#xff0c;在北京市海淀区商务局的指导下&#xff0c;由中关村东升科技园联合创新企业科普联盟共同举办的企业出海峰会于北京成功举办。本次峰会以“出海新征程&#xff0c;企业新高度”为核心议题&#xff0c;深入探讨全球化背景下科技企业出海面临的机遇与挑战。通过汇…