Spring 整合Mongodb
来源:互联网 发布:金融管理信息系统软件 编辑:程序博客网 时间:2024/06/05 09:05
1、项目采用Maven 的方式。所需要的jar包只需要配置即可。
2、与Mongodb,spring整合相关的两个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-mongodb.version}</version></dependency>
3、项目结构如下图所示:
4、pom.xml配置如下所示:
<dependencies> <!-- 日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>${xbean-spring.version}</version> </dependency> <!-- <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-spring</artifactId> <version>${spring.version}</version> </dependency> --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${httpclient.version}</version> </dependency> <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-mongodb.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency>
5、添加spring相关的配置文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- 允许JVM参数覆盖 --> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <!-- 忽略没有找到的资源文件 --> <property name="ignoreResourceNotFound" value="true" /> <!-- 配置资源文件 --> <property name="locations"> <list> <value>classpath:config.properties</value> <value>classpath:common.properties</value> </list> </property> </bean> <!-- spring 注释代替配置,自动扫描的基础包,将扫描该包以及所有子包下的所有类 --> <context:component-scan base-package="com.newsoft"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan></beans>
6、添加Mongodb相关的配置文件。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd "> <!-- 1.7版本+不支持mongo,支持mongo-client,options为client-options --> <!-- Usage of 'UserCredentials' with 'MongoClient' is no longer supported --> <!-- 配置mongodb连接池 ,创建mongoClient实例--> <!--credentials="mongodb://${mongo.user}:${mongo.pwd}@${mongo.host}:${mongo.port}/${mongo .defaultDbName}"为什么不起作用 如果需要验证,mongo-client需要加这句: credentials="${mongo.user}:${mongo.pwd}@${mongo.defaultDbName}" --> <mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}"> <mongo:client-options connections-per-host="${mongo.connectionsPerHost}" min-connections-per-host="${mongo.minConnectionsPerHost}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}" description="${mongo.description}" max-connection-idle-time="${mongo.maxConnectionIdleTime}" max-connection-life-time="${mongo.maxConnectionLifeTime}" heartbeat-socket-timeout="${mongo.heartbeatSocketTimeout}" heartbeat-connect-timeout="${mongo.heartbeatConnectTimeout}" min-heartbeat-frequency="${mongo.minHeartbeatFrequency}" heartbeat-frequency="${mongo.heartbeatFrequency}" /> </mongo:mongo-client> <!-- dbname="${mongo.defaultDbName}" host="${mongo.host}" port="${mongo.port}" username="${mongo.user}" password="${mongo.pwd}" mongo-ref="mongoClient" --> <mongo:db-factory id="mongoDbFactory" dbname="${mongo.defaultDbName}" mongo-ref="mongoClient"/> <!-- 1.Spring提供的mongodb操作模板--> <mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory" write-concern="NORMAL"/> <!-- 2.Spring提供的mongodb操作模板--> <!--<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory" /> </bean>--> <!-- MongoDB GridFS Template 支持,操作mongodb存放的文件 --> <mongo:mapping-converter id="converter" db-factory-ref="mongoDbFactory" base-package="cn.idongjia.web.dao"/> <mongo:gridFsTemplate id="gridFsTemplcate" db-factory-ref="mongoDbFactory" converter-ref="converter" /> <!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 --> <mongo:repositories base-package="com.newsoft.model" /> <!--激活注解--> <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/></beans>
#mongodbmongo.host=127.0.0.1mongo.port=27017mongo.defaultDbName=logmongo.user=liucmongo.pwd=199116mongo.connectionsPerHost=100mongo.threadsAllowedToBlockForConnectionMultiplier=5mongo.minConnectionsPerHost=5#连接超时时间mongo.connectTimeout=10000#等待时间mongo.maxWaitTime=120000#Socket超时时间mongo.socketTimeout=0mongo.socketKeepAlive=truemongo.description= test mongodb databasemongo.maxConnectionIdleTime=1500mongo.maxConnectionLifeTime=0#mongo slavemongo.heartbeatSocketTimeout=1000mongo.heartbeatConnectTimeout=1500mongo.minHeartbeatFrequency=5mongo.heartbeatFrequency=10
本项目将Mongodb相关的增删查改操作进行了一层封装。只需传入所需参数调用即可。
public class ObjectDaoImpl<T> implements ObjectDao<T>{ @Autowired protected MongoOperations mongoOperations; @Override public void save(T t) { mongoOperations.insert(t); } @Override public T saveReturnT( T t){ mongoOperations.insert(t); //如果t对象中包含id主键,则插入数据后,返回对象t,包含自增的主键id内容 return t; } @Override public int update(Query query, Update update,Class<T> tclass) { WriteResult result = mongoOperations.updateFirst(query, update, tclass); return result.getN(); } @Override public Pager page(Pager pager, Query query,Class<T> tclass) { int skipCount = (pager.getPageNumber() > 0 ? pager.getPageNumber() - 1 : 0) * pager.getPageSize(); query.skip(skipCount); query.limit(pager.getPageSize()); List<T> list = mongoOperations.find(query, tclass); pager.setResult(list); pager.setTotalCount(list.size()); return pager; } @Override public T get(Query query, Class<T> tclass) { T t = mongoOperations.findOne(query,tclass); return t; } @Override public void remove(Query query, Class<T> tclass) { mongoOperations.remove(query, tclass); }}
实体类中的注释详解:
@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中取出的数据
具体详情可以下载本项目进行查看。http://download.csdn.net/download/u012151597/9999239
- Spring整合- mongodb
- spring+Mongodb简单整合
- Spring整合- mongodb
- Mongodb整合Spring示例
- spring 于mongodb整合
- spring整合mongoDB-1
- spring整合mongoDB-2
- spring整合mongoDB-3
- mongodb与spring整合
- MongoDB和Spring整合
- MongoDB整合Spring
- Spring整合mongodb详解
- 详解Spring整合MongoDB
- spring整合mongodb 1
- spring整合mongodb 2
- Spring整合MongoDB
- mongodb和spring整合
- spring MVC 整合mongodb
- git下载代码
- 新路程------gpio按键获取按下抬起信息
- Spring Boot 官方文档学习(一)入门及使用
- 第四周项目三(3)判断链表是否递增
- Git简要教程
- Spring 整合Mongodb
- lhgdialog的传值问题
- 第6章 面向对象(下)
- 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
- 解释一下全连接层
- 回顾大一·C语言编程3.2(1)
- Python基础
- java面向对象
- [分享]重映射User32.dll调用MessageBox对话框