我们java实体类都是驼峰命名,例如userName但我们在用mybatis的时候是能映射数据库为下划线字段user_name的。而mongodb是直接映射,也就是说,假设我的实体类是userName,那么对应到mongodb的集合属性也是userName。这样不规范会有怎样结果呢?通过实践我发现驼峰命名后做不了java反射,有的会映射不到。所以我们还是应该按规范来写,那么我们应该怎么改才能既能实体类驼峰又能集合带下划线呢。有两种方法。

一、在实体类添加@Field注解

例如

    @Field("user_name")
    private String userName;

二、给配置文件的mongodb连接加上一段field-naming-strategy

例如

      uri: mongodb://127.0.0.1/gw
      username: admin
      password: admin123
      field-naming-strategy: org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy

加上这一段后,mongodb就能像mybatis一样自动把实体类的驼峰命名的属性映射到数据库下划线命名的字段了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐