问题场景描述:
实体类:
数据库版本5.7.29,返回数据有10条, 数据库中也是10条, 但在postman中查对应字段只有9个, 因为返回字段的值中7个值为“下架”, 2个值为空字符, 1个为null, 为null的字段在返回数据中未将字段显示
没懂你描述的意思?
你是指SQL查出来的为空的数据没有通过接口返回到前端吗?
如果是的话在响应里面配置下:
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,SerializerFeature.WriteMapNullValue);//主要看这行代码
查询业务结果字段为空?
为空的数据截图看下,是所有都为空,还是部分为空。
加个配置就可以了
这是我的配置
如果yml中配置不起作用的话,在sqlSessionFactory配置下就可以了
具体的为空指的是什么?
你的意思就是unshelveReason为NULL也需要查询出来吗?
你加上个 或 条件试试?
// 添加查询条件,字段为NULL
queryWrapper.isNull("column_name");
建议把表的创建语句和数据库版本类型描述清楚,有可能是为null本来查询出来就是一条数据
默认情况下,MyBatis-Plus 在生成 SQL 执行查询语句时会排除字段值为空的字段名,不将其包含在查询结果中。
在最新的 MyBatis-Plus 版本中,配置方式可能有所改变。你可以参考以下步骤来配置 MyBatis-Plus 处理空字段的方式:
创建一个配置类,例如 MyBatisPlusConfig,并添加 @Configuration 注解使其成为一个配置类。
在该配置类中,定义一个名为 mybatisConfigurationCustomizer 的 Bean 方法,返回值类型为 org.apache.ibatis.session.ConfigurationCustomizer。
在该 Bean 方法中,使用 Lambda 表达式定制 MyBatis 的配置,设置 setCallSettersOnNulls(true) 来处理空字段。示例代码如下:
@Configuration
public class MyBatisPlusConfig {
@Bean
public ConfigurationCustomizer mybatisConfigurationCustomizer() {
return configuration -> configuration.setCallSettersOnNulls(true);
}
}
然后,将该配置类注入到 Spring 容器中,以使配置生效。
这样配置后,MyBatis-Plus 将在生成 SQL 执行查询语句时包含空字段。确保你的项目中已经引入了兼容的 MyBatis-Plus 版本和相应的依赖库。
你把查询语句的那段代码贴出来吧,不然不好分析
这样试试
项目yml 配置文件增加
mybatis-plus:
configuration:
call-setters-on-nulls: true
看起来是是由于MyBatis-Plus的配置或者映射关系引起的。一些可能的原因和解决方法:
可以在查询条件中指定该字段的值为NULL或空字符串,或者在实体类中添加对应的字段,以便在查询结果中返回。
以检查Mapper XML文件中的查询语句,确保包含了所有需要查询的字段。
在实体类中,如果某个字段的注解配置不正确,或者与数据库中的字段名不匹配,可能会导致查询结果中没有该字段。
在MyBatis-Plus的配置中,如果设置了mapUnderscoreToCamelCase属性为true,可能会导致查询结果中的字段名与实体类中的字段名不匹配。
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您的描述,您在使用Spring Boot集成MyBatis-Plus时遇到了查询结果字段为空而不显示的问题。您已经进行了配置,并且数据库中有10条数据,但在Postman中只显示了9个字段的值,其中有7个值为"下架",2个值为空字符,1个为null的字段在返回数据中未显示。
可能导致这种情况的原因有以下几点:
综上所述,您可以逐步检查和调试以上可能的原因,以确定导致查询结果字段为空而不显示的具体原因,并进行相应的修复。