前言
今天在做项目的时候遇到了一个问题,真的是有点神奇的问题。在进行数据查询的时候,实体类中带有下划线的字段查出来的结果都为null,由此可见就是mybatis的事情。
叙述
下面是我的数据库的表结构
由逆向生成工具生成的map文件如下
在项目运行的时候,凡是有下划线的字段都没有查到值,无奈之下只能找度娘了。关于mybatis无法给带有下划线属性赋值的问题一共有两种解决方法,具体的解决方法如下:
解决方案 |
<configuration>
<!-- 全局配置 -->
<settings>
<!--允许 JDBC 支持自动生成主键-->
<setting name="useGeneratedKeys" value="false"/>
<!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
2、把SQL语句中的 resultType 改成了resultMap=”BaseResultMap” 结果就会正常显示出来了。
MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。
如果返回的是resultMap类型,则返回的类型会自动去找该类所对应的map文件,如果是resultType,则数据会自动自己定义的实体。
感谢您的阅读~~