Mybatis-puls中select查询方法返回为空null
cnblogs 2024-08-29 16:09:00 阅读 85
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
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。