No projeto JAVA, mybatis plus é usado para ler o banco de dados MySQL. Um dos campos não tem valor de retorno. Ao verificar o SQL, há um valor normal, mas o valor de retorno final é nulo.
Processo de investigação:
Você pode primeiro adicionar a seguinte instrução ao arquivo de configuração e imprimir o SQL específico, condições de consulta, valores de retorno, etc. quando mybatis é executado no
console.yml
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
.propriedades
mybatis-plus.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
No console, posso ver que a saída SQL está normal e os campos correspondentes são retornados.Os outros campos são retornados normalmente, exceto um campo sublinhado, que é nulo.
Você pode ver que se o nome do campo da classe de entidade estiver sublinhado, o valor não poderá ser lido.
Por exemplo:
@TableName(value = "table")
public class Info {
@TableField(value = "book_name")
private String book_name;
}
Você pode ver que na configuração oficial correspondente, a função de conversão de sublinhados em camelos está habilitada.
Converta o formato de sublinhado para o formato camel case.Se o valor correspondente não puder ser correspondido,nulo será retornado.
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
configuration.setJdbcTypeForNull(JdbcType.NULL);
//下划线转为驼峰
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactory.setConfiguration(configuration);
solução
1. Você pode optar por desligar isso no
arquivo de configuração.yml
mybatis-plus:
configuration:
map-underscore-to-camel-case: false # 数据库下划线自动转驼峰标示关闭
.propriedades
mybatis.configuration.map-underscore-to-camel-case = false
2. Você pode optar diretamente por escrever uma instrução sql para obter esse valor.
Ela segue o princípio de não alterar toda a situação sem alterá-la. Afinal, também é uma instrução codificada pelos predecessores. Se você alterar um lugar, o todo o corpo será afetado. . Eu escolhi isso para evitar problemas. .
3. Modifique a classe de entidade e altere-a para camel case para correspondência normal.