getOne返回null
- 问题描述
- 分析过程
- 总结
问题描述
在数据库建了一张表主要包括两个字段master_id和slave_id;主要的额外字段max_lots 默认值是null;
当调用getOne进行查询结果是null,但实际情况是数据库时应该返回值的;
AotfxMasterSlave existMasterSlaveSql = new AotfxMasterSlave();existMasterSlaveSql.setMasterId(masterId);existMasterSlaveSql.setSlaveId(slaveId);return this.aotfxMasterSlaveService.getOne(new QueryWrapper<>(existMasterSlaveSql));
分析过程
为了查看完整的SQL语句执行情况,mybatis-plus需要配置控制台打印完整带参数SQL语句。
- application.yml
#mybatis-plus配置控制台打印完整带参数SQL语句
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- application.properties
#mybatis-plus配置控制台打印完整带参数SQL语句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
发现了问题,在控制台输出的时候,发现max_lots 也作为了条件进行查询,原因在于我在实体类里面给max_lots设置了默认值
所以在数据库查询不到,因为数据库max_lots的值都为null,解决办法,不要在实体类添加默认值,通知修改查询语句为:
this.aotfxMasterSlaveService.getOne(Wrappers.<AotfxMasterSlave>lambdaQuery().eq(AotfxMasterSlave::getMasterId, masterId).eq(AotfxMasterSlave::getSlaveId, slaveId));