深入理解 MyBatis-Plus 中的字段策略:not_null vs not_empty

深入理解 MyBatis-Plus 中的字段策略:not_null vs not_empty

在使用 MyBatis-Plus 框架进行数据库操作时,了解如何正确使用字段策略(Field Strategy)是优化数据库交互的关键。特别是 not_nullnot_empty 这两种策略,在实际应用中会对数据的插入和更新产生显著影响。本文将详细解析这两种策略的区别,并通过具体示例帮助开发者选择最适合自己需求的策略。

1. 策略概述
  • not_null
    当字段值为 null 时,该字段不会被映射到 SQL 语句中。如果字段值非 null(包括空字符串或空集合),则字段会被包含在 SQL 语句中。

  • not_empty
    只有当字段值不为 null 且不为空(对于字符串来说不是空字符串,对于集合来说不是空集合)时,该字段才会被映射到 SQL 语句中。这意味着如果字段值为 null 或者“空”,它就不会被包含在 SQL 语句中。

2. 策略区分
  • not_null 关注点在于是否为 null。这个策略的应用场景是,即使数据为空(如空字符串),只要不是 null,就需要记录到数据库。

    <
### 配置 MyBatis-Plus 的 GlobalConfig 为了实现使用雪花算法生成 ID 和设置更新策略为仅更新非空字段,在 `application.yml` 或者 `application.properties` 文件中可以配置 MyBatis-Plus 的全局配置项。具体来说,可以通过 `global-config` 来指定这些选项。 #### 数据库配置与 ID 类型 对于数据库连接和其他相关属性的配置,通常是在应用的配置文件里完成。而要让实体类中的主键采用雪花算法来生成,则需通过 `id-type` 参数设定为 `AUTO` 或者更精确地指向 `ASSIGN_ID` 以便利用内置的支持[^2]: ```yaml mybatis-plus: global-config: db-config: id-type: assign_id # 使用雪花算法分配ID ``` 这段 YAML 格式的配置指定了当创建新记录时应自动为其分配唯一标识符的方式——这里选择了基于时间戳和机器码组合而成的分布式唯一ID生成器(即所谓的“雪花”算法)。这有助于确保即使在高并发环境下也能安全有效地生产不重复的关键字值[^4]。 #### 更新策略调整 为了让框架只针对那些被赋予了实际数值而非 NULL 的列执行 UPDATE SQL 语句,应当把 field-strategy 设置成 NOT_EMPTY 。这意味着如果某条记录里的某些特定字段为空(null),它们就不会成为此次数据变更的一部分[^1]: ```yaml mybatis-plus: global-config: db-config: id-type: assign_id field-strategy: not_empty # 只有非空字段才会参与更新操作 ``` 上述配置使得应用程序能够更加灵活高效地管理其持久化对象的状态变化过程;同时减少了不必要的写入动作所带来的开销以及潜在的风险隐患[^3]。 #### 完整示例 下面给出的是一个完整的 Spring Boot 应用程序配置片段,它不仅涵盖了前面提到的内容,还包括了其他一些常用的设置项: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath*:mapper/*.xml type-enums-package: com.example.enums configuration: map-underscore-to-camel-case: true global-config: banner: false db-config: id-type: assign_id field-strategy: not_empty ``` 此段代码展示了如何在一个典型的 Java Web 开发环境中集成并优化 MyBatis Plus ORM 工具的行为模式,从而更好地满足业务逻辑需求的同时提高系统的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值