【解决问题】mybatis plus 读取数据库没有返回值问题 返回值都为null

妖狐艹你老母 2024-04-01 10:03 176阅读 0赞

JAVA项目中使用mybatis plus 读取MySQL数据库,其中有个字段没有返回值问题,查看SQL都正常有值,但其最后返回值都为null。

排查过程:

可以先在配置文件加上如下语句,可以在控制台打印出mybatis执行时的具体sql、查询条件、返回值等等
.yml

  1. mybatis-plus:
  2. configuration:
  3. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

.properties

  1. mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl

在控制台中看到SQL出来都正常,且有相应字段返回,其他字段都正常返回,只有一个带下划线的字段都为null。
可以看类似这样实体类字段名称有下划线的情况,会导致读取不到值

例如:

  1. @TableName(value = "table")
  2. public class Info {
  3. @TableField(value = "book_name")
  4. private String book_name;
  5. }

可以看到官方相应配置中,有开启下划线转驼峰的功能。
把下划线形式的转成驼峰格式了,无法匹配到对应值就返回null了

  1. MybatisConfiguration configuration = new MybatisConfiguration();
  2. configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
  3. configuration.setJdbcTypeForNull(JdbcType.NULL);
  4. //下划线转为驼峰
  5. configuration.setMapUnderscoreToCamelCase(true);
  6. sqlSessionFactory.setConfiguration(configuration);

解决方案

1、可以选择在配置文件中把这个关闭
.yml

  1. mybatis-plus:
  2. configuration:
  3. map-underscore-to-camel-case: false # 数据库下划线自动转驼峰标示关闭

.properties

  1. mybatis.configuration.map-underscore-to-camel-case = false

2、可以直接选择写sql语句来获取这个值
遵循着能不改全局就不动的原则,毕竟也是前人先码下的语句,,改一处而动全身。。还是省事选择了这个。。

3、修改实体类,改成驼峰形式的就可以正常匹配了

发表评论

表情:
评论列表 (有 0 条评论,176人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis Update操作返回问题

    Mybatis Update操作返回值问题 在项目中有些时候我们需要根据更新是否成功,来判断下个操作我们需要如何处理, 在获取update操作的返回值时遇到了一个问题,似乎

    相关 JackSon返回null的字段

    说实话这个问题真的让我头疼,最终想到一个投机取巧的方法,下面且听我一一道来。 背景 因为mobile团队为了节省流量,所以架构组就把一些值为`null`或者`""`的字