Mybatis-puls中select查询方法返回为空null
  DOMFpsm7nNFz 16天前 41 0

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

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 16天前 0

暂无评论

推荐阅读
  vqyNVbtzBw9E   2天前   20   0   0 Java
  ZTo294hNoDcA   2天前   29   0   0 Java
  3dygdw7fVgD7   2天前   23   0   0 Java
  ZTo294hNoDcA   2天前   14   0   0 Java
  ZTo294hNoDcA   22小时前   13   0   0 Java
  6DQJUnBMpiUt   22小时前   13   0   0 Java
  028qt9vJ8T8H   3天前   37   0   0 Java
  028qt9vJ8T8H   3天前   35   0   0 Java
DOMFpsm7nNFz