Mongodb与spring集成(2)------实体映射

spring-data-mongodb中的实体映射是通过

MongoMappingConverter这个类实现的。它可以通过注释把

java类转换为mongodb的文档。
它有以下几种注释:
@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。

@Document - 把一个java类声明为mongodb的文档,可以通

过collection参数指定这个类对应的文档。

@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。

@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。

@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。

@GeoSpatialIndexed - 声明该字段为地理信息的索引。

@Transient - 映射忽略的字段,该字段不会保存到

mongodb。

@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。

以下引用一个官方文档的例子:

Person类

    @Document(collection="person")  
    @CompoundIndexes({  
        @CompoundIndex(name = "age_idx", def = "{'lastName': 1, 'age': -1}")  
    })  
    public class Person<T extends Address> {  
      
      @Id  
      private String id;  
      @Indexed(unique = true)  
      private Integer ssn;  
      private String firstName;  
      @Indexed  
      private String lastName;  
      private Integer age;  
      @Transient  
      private Integer accountTotal;  
      @DBRef  
      private List<Account> accounts;  
      private T address;  
      
        
      public Person(Integer ssn) {  
        this.ssn = ssn;  
      }  
        
      @PersistenceConstructor  
      public Person(Integer ssn, String firstName, String lastName, Integer age, T address) {  
        this.ssn = ssn;  
        this.firstName = firstName;  
        this.lastName = lastName;  
        this.age = age;  
        this.address = address;  
      }  

Account类

@Document  
public class Account {  
  
  @Id  
  private ObjectId id;  
  private Float total;  
  
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud集成MongoDB可以通过使用Spring Data MongoDB实现Spring Data MongoDB是一个用于简化和简化与MongoDB交互的框架,它提供了一套简单的API,可以轻松地进行数据库操作。 首先,需要在pom.xml文件添加相关的依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 然后,在Spring Boot的主类上添加`@EnableMongoRepositories`注解,以启用MongoDB的支持: ```java @EnableMongoRepositories(basePackages = "com.example.repository") @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 其,`com.example.repository`是存放MongoDB相关的repository接口的包路径。 接下来,可以创建一个实体类来映射MongoDB的集合: ```java @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // getters and setters } ``` 在这个例子,我们创建了一个名为"users"的集合,并在User类定义了id、name和age字段。 然后,可以创建一个继承自`MongoRepository`的接口来定义对于User集合的操作: ```java @Repository public interface UserRepository extends MongoRepository<User, String> { List<User> findByAge(int age); } ``` 在这个例子,我们定义了一个`findByAge`方法,用于根据年龄查询用户。 最后,可以在其他组件通过依赖注入的方式使用UserRepository来进行数据库操作: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findByAge(int age) { return userRepository.findByAge(age); } } ``` 通过上述步骤,就可以很方便地使用Spring Cloud集成MongoDB进行数据库操作了。当然,除了上述的基本操作外,Spring Data MongoDB还提供了更多高级的功能,如聚合查询、分页查询等,可以根据具体需求进行扩展使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值