今天发现一个问题,在实体得一个列jdbcDatasourceId上指定数据库列名@Column(name="datasource_id")不生效。
深入mybatis源码org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createAutomaticMappings()方法中发现,刚获取列映射时,是有成功取出来的:
结果在下面有个会根据列名按下划线转驼峰找对应属性名,找不到就就不会添加到映射集合里,这里转完后为datasourceId,自然与jdbcDatasourceId对不上的。
然后会交给AutoMappingUnknownColumnBehavior处理,如果配置了autoMappingUnknownColumnBehavior为WARNING或者FALING就会输出警告日志:
后来发现用mybatis如果属性名和列名差距太大没啥好办法,要不只能在对应得@Select注解下加Result
@Result(property = "jdbcDatasourceId", column = "datasource_Id")
要不就只能把属性名改成数据库列名对应得驼峰式datasourceId了。