mongodb总结

来源:互联网 发布:手机直播软件 编辑:程序博客网 时间:2024/05/16 15:46
  1. 引入jar包
<dependency>            <groupId>org.mongodb</groupId>        <artifactId>mongo-java-driver</artifactId       <version>${mongo.java.driver.version}</version>        </dependency><dependency>    <groupId>org.springframework.data</groupId>   <artifactId>spring-data-mongodb</artifactId>      <version>${spring.data.mongo.version}</version>          <exclusions>            <exclusion>                <groupId>org.slf4j</groupId>                <artifactId>slf4j-log4j12</artifactId>            </exclusion>            <exclusion>                <groupId>log4j</groupId>                <artifactId>log4j</artifactId>            </exclusion>         </exclusions>        </dependency>

整合Spring和mongodb需要两个jar包:
1.mongodb官方驱动 mongodb-java-driver
2.spring基于mongo-java-driver的连接池管理和orm的中间键spring-data-mongodb

  1. 配置文件
    xml标签的引用
<dependency>            <groupId>org.mongodb</groupId>        <artifactId>mongo-java-driver</artifactId       <version>${mongo.java.driver.version}</version>        </dependency><dependency>    <groupId>org.springframework.data</groupId>   <artifactId>spring-data-mongodb</artifactId>      <version>${spring.data.mongo.version}</version>          <exclusions>            <exclusion>                <groupId>org.slf4j</groupId>                <artifactId>slf4j-log4j12</artifactId>            </exclusion>            <exclusion>                <groupId>log4j</groupId>                <artifactId>log4j</artifactId>            </exclusion>         </exclusions>        </dependency>

mongodb连接池依赖注入配置

<!--连接池配置-->     <mongo:mongo host="${mongo.host}" port="${mongo.port}">         <mongo:options connections-per-host="${mongo.options.connections-per-host}"                        threads-allowed-to-block-for-connection-multiplier="${mongo.options.threads-allowed-to-block-for-connection-multiplier}"                        connect-timeout="${mongo.options.connect-timeout}"                        max-wait-time="${mongo.options.max-wait-time}"                        auto-connect-retry="${mongo.options.auto-connect-retry}"                        socket-keep-alive="${mongo.options.socket-keep-alive}"                        socket-timeout="${mongo.options.socket-timeout}"                        slave-ok="${mongo.options.slave-ok}"                        write-number="${mongo.options.write-number}"                        write-timeout="${mongo.options.write-timeout}"                        write-fsync="${mongo.options.write-fsync}"/>     </mongo:mongo>

连接池工厂配置

<!--连接池工厂配置-->     <mongo:db-factory dbname="${mongo.dbname}" username="${mongo.username}" password="${mongo.password}" mongo-ref="mongo"/>

配置操作模版类

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">         <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>     </bean>

扫描实体类

<!--实体映射自动扫描注入的包-->     <mongo:mapping-converter>         <mongo:custom-converters base-package="com.shunova.core.entity.mongo" />     </mongo:mapping-converter>

扫描操作接口类

<mongo:repositories base-package="com.myyule.mongo.*.repository"/
  1. 实体类配置
    @Id 文档的唯一标识,在mongodb中为objectId,它是唯一的通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
    @Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。@Document(collection=”mongodb”) mongodb对应表
    @DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。 @Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。 @CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。 @GeoSpatialIndexed - 声明该字段为地理信息的索引。 @Transient - 映射忽略的字段,该字段不会保存到mongodb。 @PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据
    1. 常用的sql
      And — 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
      Or — 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
      Between — 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);
      LessThan — 等价于 SQL 中的 “<”,比如 findBySalaryLessThan(int max);
      GreaterThan — 等价于 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);
      IsNull — 等价于 SQL 中的 “is null”,比如 findByUsernameIsNull();
      IsNotNull — 等价于 SQL 中的 “is not null”,比如 findByUsernameIsNotNull();
      NotNull — 与 IsNotNull 等价;
      Like — 等价于 SQL 中的 “like”,比如 findByUsernameLike(String user);
      NotLike — 等价于 SQL 中的 “not like”,比如 findByUsernameNotLike(String user);
      OrderBy — 等价于 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user);
      Not — 等价于 SQL 中的 “! =”,比如 findByUsernameNot(String user);
      In — 等价于 SQL 中的 “in”,比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;
      NotIn — 等价于 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数;
原创粉丝点击