暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringData MongoDB

麦田里的守望者 2021-05-16
1580

SpringData MongoDB 
NoSQL Database
简单介绍

Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new datastores while retaining store-specific features and capabilities.
1
SpringData 环境搭建

下载Maven依赖

<dependencies>

  <dependency>

        <groupId>org.springframework.data</groupId>

        <artifactId>spring-data-mongodb</artifactId>

        <version>1.9.5.RELEASE</version>

     </dependency>

  <dependency>

  <groupId>org.springframework</groupId>

  <artifactId>spring-test</artifactId>

  <version>4.2.8.RELEASE</version>

  </dependency>

  <dependency>

  <groupId>junit</groupId>

  <artifactId>junit</artifactId>

  <version>4.12</version>

  </dependency>

  <dependency>

   <groupId>org.springframework.data</groupId>

   <artifactId>spring-data-mongodb-log4j</artifactId>

   <version>1.9.5.RELEASE</version>

</dependency>

  </dependencies>

加SpringData配置

温馨提示

配置完SpringDataMongoDB所需的schema后,别忘记关联xsd配置提示。SpringData提供了MongoTemplate实现了对文档和实体类的转换,这些转换是通过Springdata提供的一套注解实现的。

<mongo:mongoid="mongo"   host="" port="">

 <mongo:options connections-per-host="8"

threads-allowed-to-block-for-connection-multiplier="4"

connect-timeout="1000"

max-wait-time="1500"

auto-connect-retry="true"

socket-keep-alive="true"

socket-timeout="1500"

slave-ok="true"

write-number="1"

write-timeout="0"

write-fsync="true"

/>

</mongo:mongo>

<mongo:db-factory id="dbFactory" dbname="zpark" mongo-ref="mongo"/>

<bean id="mongoTemplate" class="...MongoTemplate">

<constructor-arg name="dbFactory" ref="mongoDbFactory"/>

</bean>

@Document

@Document(collection="t_user")

public class User implements Serializable{

.....

}

该注解用在类上用于表示类和实体类的一种映射关系。其中collection表示映射集合的名字。

@Id

@Document(collection="t_user")

public class User implements Serializable{    

       //默认情况下mongo的主键只能是String、BigInteger ,ObjectId

       @Id

private String id;

        .....

}

该注解用在属性列上用于表示该属性和mongoDB的_id属性相映射。

@Field

@Document(collection="t_user")

public class User implements Serializable{    

       //默认情况下mongo的主键只能是String、BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

private String name;

        .....

}

该注解用在属性列上用于表示该属性和mongoDB的普通属性相映射,可以省略不写。

@Index

@Document(collection="t_user")

 public class User implements Serializable{    

       //默认情况下mongo的主键只能是String,BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

        @Index(name="name_index",unique=true,sparse=true)

private String name;        

         .....

}

该注解用在属性列上用于表示该属性控制索引列。

@PersistenceConstructor

@Document(collection="t_user")

 public class User implements Serializable{    

       //默认情况下mongo的主键只能是String,BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

        @Index(name="name_index",unique=true,sparse=true)

private String name; 

        @PersistenceConstructor

        public User(String name,String address,...) {       

         .....

}

该注解用在构造方法上在SpringData反序列化的时候起作用。

@CompoundIndexes

@Document(collection="t_user")

@CompoundIndexes({

@CompoundIndex(name="name_age_index",unique=true,sparse=true

                                            def="{'name':1,'age':-1}")

})

 public class User implements Serializable{    

       //默认情况下mongo的主键只能是String,BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

        @Index(name="name_index",unique=true,sparse=true)

private String name; 

        @PersistenceConstructor

        public User(String name,String address,...) { ...}   

         .....

}

创建复合索引,使用name和age属性作为联合索引列

@Transient

@Document(collection="t_user")

@CompoundIndexes({

@CompoundIndex(name="name_age_index",unique=true,sparse=true

                                            def="{'name':1,'age':-1}")

})

 public class User implements Serializable{    

       //默认情况下mongo的主键只能是String,BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

        @Index(name="name_index",unique=true,sparse=true)

private String name; 

        @Transient

        private String email; 

        @PersistenceConstructor

        public User(String name,String address,...) { ...}   

         .....

}

@DBRef

@Document(collection="t_user")

@CompoundIndexes({

@CompoundIndex(name="name_age_index",unique=true,sparse=true

                                            def="{'name':1,'age':-1}")

})

 public class User implements Serializable{    

       //默认情况下mongo的主键只能是String,BigInteger ,ObjectId

       @Id

private String id;

        @Field(name="name")

        @Index(name="name_index",unique=true,sparse=true)

private String name; 

        @Transient

        private String email; 

        @PersistenceConstructor

        public User(String name,String address,...) { ...}   

         .....

         @DBRef(lazy=true)

         private List<Book> emails

}

表示关联关系属性,一般在保存记录的时候先保存子记录。lazy表示对子记录懒加载

API使用介绍
添加一条记录



条件查询



查询所有记录



分页查询



排序查询



本章SpringDataMongoDB的基础操作,更多精彩内容敬请订阅jiangzz_wy公众账号,感谢您的持续关注。

继续关注
GUAN ZHU


文章转载自麦田里的守望者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论