首页 > 其他分享 >Mybatis-puls中select查询方法返回为空null

Mybatis-puls中select查询方法返回为空null

时间:2024-08-29 15:52:24浏览次数:9  
标签:material flower price 查询方法 private 为空 main id puls

1、项目参数

springboot 2.6.13

jdk8

Mybatis-Plus3.5.4

2、问题描述

在3.5.4版本的MP中使用select方法查询到数据,却返回为空

实体类

public class Flower {
    @TableId(value = "flower_id",type = IdType.INPUT)
    private int flower_id;
    private String flower_name;
    private double price;
    private String main_material;
}

查询语句

class SpringbootMpApplicationTests {
    @Autowired
    private FLowerDao fLowerDao;
    @Test
    void contextLoads() {
        System.out.println(fLowerDao.selectById(2637775));
    }
}

返回结果

domainflower{flower_id=0, flower_name='null', price=2399.0, main_material='null'}

3、问题原因

本质:命名规范的问题,在创建数据库表的时候,创建表信息如下:

CREATE TABLE flower(
flower_id BIGINT,
flower_name VARCHAR(100),
price  DECIMAL(8.2),
main_material VARCHAR(10),
)DEFAULT CHARSET=utf8;

Mybatisplus查询数据的时候,会默认使用驼峰命名法,也是就会使用flowerId,flowerName,price,mainMaterial。

造成的结果:由于Mybatisplus的这个规则问题,造成了默认的映射失败,也就是数据库的字段被修改成了flowerId,而bean字段为flower_id,这就造成了映射失败

4、解决方案

4.1我们在数据库和bean的命名上采用驼峰命名法,就可以避免这个这个。

实体类改为

public class Flower {
    @TableId(value = "flower_id",type = IdType.INPUT)
    private int flowerId;
    @TableField(value = "flower_name")
    private String flowerName;
    private double price;
    @TableField(value = "main_material")
    private String mainMaterial;
}

4.2关闭mybatisplus默认的驼峰命名法:关闭方式如下

org.apache.ibatis.logging.stdout.StdOutImpl:打印mybatisplus执行的sql语句

 map-underscore-to-camel-case:关闭驼峰命名法

#在application.yml中插入
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false

 

标签:material,flower,price,查询方法,private,为空,main,id,puls
From: https://www.cnblogs.com/wei-jing/p/18386860

相关文章

  • 当构造与析构的函数体为空,会发生什么?
    析构函数、构造函数用来进行数据的销毁和初始化。那么系统默认生成的构造和析构有什么特点呢?构造函数对于自定义类型,会调用对应的默认构造,内置类型不做处理。当显式定义了无参的默认构造,初始化列表和函数体都为空时,也会在初始化列表阶段调用自定义类的默认构造(所有成员变量......
  • .NET Core 处理 WebAPI JSON 返回烦人的null为空
    前言   项目开发中不管是前台还是后台都会遇到烦人的null,数据库表中字段允许空值,则代码实体类中对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都为null,前台对应字段赋值需要做null值判断,怎么才能全局把null替换为空。    本文分享Web......
  • Pulsar 入门实战(2)--特性及架构
    本文主要介绍Pulsar的特性及架构,对应的pulsar版本为3.3.x。1、Pulsar特性Pulsar实例原生支持多个集群,并且在集群之间实现了无缝的地理复制消息。极低的发布和端到端延迟。无缝扩展至超过一百万个主题。简单的客户端API,支持Java、Go、Python和C++语言。多种订阅......
  • Pulsar 入门实战(1)--Pulsar 消息传递
    本文主要介绍Pulsar消息传递的相关概念,对应的pulsar版本为3.3.x。1、概述Pulsar基于发布-订阅模式构建。在这种模式中,生产者将消息发布到主题;消费者订阅这些主题,处理传入的消息,并在处理完成后向broker发送确认。当创建订阅时,即使消费者断开连接,Pulsar也会保留所有消......
  • SQL进阶技巧:数据清洗如何利用组内最近不为空的数据填充缺失值。【埋点日志事件缺失值
    目录0引言1问题描述2数据准备 3问题分析4小结0引言  在用户行为分析中,我们往往需要对用户浏览行为进行分析或获客的渠道进行分析,在埋点日志中用户一个session中会浏览不同的界面,会进行url的跳转,在前端埋点时,往往将用户刚进入界面时的url进行存储,后续在当前......
  • EasyCVR视频汇聚平台设备发送了GPS位置,但是订阅轨迹为空是什么原因?
    安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、GIS地图、轨迹跟踪、平台级联等视频能力。用户描述,设备在电子地图中可以查看到定位信息,但是在轨迹地图里查看却为空,于是联系......
  • 如何检查ManyToMany字段是否不为空?
    如何检查是否存在与我的模型对象相关的ManyToMany字段对象?例如,我有一个模型:classCategory(models.Model):related_categories=models.ManyToManyField('self',blank=True)我只想在存在相关对象时执行某些操作:ifexample_category.related_categories:......
  • py调用webservice array数组老是为空的问题
    pythonwebserbiceserverimportloggingfromflaskimportFlaskfromspyne.applicationimportApplicationfromspyne.protocol.soapimportSoap11fromspyne.server.wsgiimportWsgiApplicationfromwerkzeug.servingimportrun_simplefromwerkzeug.middleware......
  • Pandas:如果键列为空,则合并 2 行
    我有一个数据框:密钥名称数量状况包装A1糖果A25好25不错B1......
  • Newtonsoft.Json 全局设置 json null转换为空(包含int)
    publicclassCustomDateConverter:IsoDateTimeConverter{publicCustomDateConverter(){DateTimeFormat="yyyy-MM-ddHH:mm:ss";//设定你想要的日期时间格式}}publicclassNullToEmptyStringConverter:JsonCo......