【各种**问题系列】MyBatisPlus 出现时间等数据返回为Null的情况

        出现数据返回为Null的情况(排除数据库中的记录字段本来的情况),默认情况下 MyBatisPlus 开启了类属性的驼峰命令规则:

# 配置MybatisPlus:
mybatis-plus:
  configuration:
    # MyBatisPlus 驼峰命名:
    map-underscore-to-camel-case: true

        如果数据库表中的字段采用了下划线方式分隔两个单词,那么在Class类中对应的数据名需要采用驼峰命名方式,否则就可能出现数据为Null的情况,或者为默认值的情况。

        这里可以尝试关闭驼峰命名规则:

# 配置MybatisPlus:
mybatis-plus:
  configuration:
    # MyBatisPlus 驼峰命名:
    map-underscore-to-camel-case: false

        关闭驼峰命名之后,就会通过数据库表字段名和Class属性名进行一一比对赋值。


        针对于 Data 数据类型,建议更换为 LocalDateTime 类型。

### MyBatisPlus 查询结果为 Null 的解决方案 当使用 Spring Boot 和 MyBatis-Plus 开发项目时,可能会遇到查询结果中某些字段返回 `null` 的情况。即使 SQL 语句本身没有问题,仍然可能出现这种情况。 #### 一、检查实体类映射配置 确保实体类中的字段名与数据库表中的列名完全匹配。如果不一致,则可能导致查询结果为。可以使用 `@TableField` 注解来指定字段名称: ```java @TableField("column_name") private String fieldName; ``` #### 二、调整全局配置项 MyBatis-Plus 提供了多种方式处理字段值为 `null` 或者字符串的情况。可以通过修改全局配置文件 application.yml 来改变默认行为[^3]: ```yaml mybatis-plus: global-config: db-config: field-strategy: NOT_NULL # 设置为非 NULL 默认策略 ``` 这表示只有当对象中有赋过值的属性才会被用于更新操作,而未赋值即保持原样不变。 #### 三、自定义逻辑处理器 对于更复杂的需求,还可以通过实现元对象工厂接口 MetaObjectHandler 自定义插入/更新前后的数据填充规则。比如针对特定条件下的 null 处理机制[^4]: ```java @Component public class CustomMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 插入之前自动填充创建时间和修改时间等公共字段 } @Override public void updateFill(MetaObject metaObject) { Object updateTime = getFieldValByName("updateTime", metaObject); if (updateTime == null){ setFieldValByName("updateTime", new Date(), metaObject); } // 对于其他需要特殊处理的字段也可以在这里做相应判断并赋予合适初始值而非直接置为null } } ``` 以上措施能够有效减少由于框架内部原因造成的意外 `null` 返回现象,提高应用程序稳定性的同时也增强了代码可读性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃糖的范同学

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值