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
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容