问题描述:
数据库字段为USER_ID,实体类为userId,在application.xml做如下配置,可以自动进行映射:
mybatis.configuration.mapUnderscoreToCamelCase=true或新建mybatis.xml配置文件
进行以上配置后,并没有映射成功,查出来的数据都为null。
问题分析:
1、把项目整体迁移到MySQL数据库上,可以正常查出数据,能够正常映射,那么可以证明是Oracle数据库的问题,或者是Mybatis的设置问题,排除代码逻辑问题。
2、为实体类加入映射规则:
问题依旧,查出的数据还是null值。 3、使用最简单的例子做测试,如果数据库字段是这样USERID,没有下划线,那么Mybatis是可以映射成功的。也就是说,Mybatis在使用Oracle数据库时,字段带上下划线不能映射。 解决方式: 1、将实体类改为和数据库字段一模一模,即也加上下划线,但这样又不符合JAVA的驼峰命名规范,但如果不能修改数据库,这也是权宜之计。 2、修改数据库字段,将下划线去除,如USER_ID改为USERID,这个方式对于数据库来说并不友好,因为单词间没有分割,单看字段名很难一目了然的明白字段的意义。 最后,附上官方的配置说明 mybatis-spring-boot-autoconfigure – MyBatis Sring-BootStarter | Reference Documentation http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration