spring boot中使用注解查询mysql的时候,数据库表的字段和java bean的字段对应不上,造成填充为空,
例子如下:
@Mapper
@Table(name = "robad")
public interface RobadMapper {
@Select("select * from robad where pkg_name = #{pkgName} limit 0,10")
public User getRobadListByPackageName(@Param("id") String id);
}
这个里面数据库有下划线的offer_id属性查询出来的结果都为null
这样写就可以,但是太过麻烦
@Results({
@Result(column = "offer_id",property = "offerId"),
})
修改mybatis配置:
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.map-underscore-to-camel-case=true
如果上面还不生效,可以这样
@Select("select * from robad where pkg_name = #{pkgName} limit 0,10")
@ResultMap("BaseResultMap")
List getRobadListByPackageName(@Param("pkgName") String pkgName);
另外mybatis忽略字段可采用如下方式
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。