mongodb整合spring

来源:互联网 发布:js set to array 编辑:程序博客网 时间:2024/05/19 19:59

1.mongodb.properties文件

#mongoDB连接配置 mongo.hostport=127.0.0.1:27017 mongo.connectionsPerHost=8 mongo.threadsAllowedToBlockForConnectionMultiplier=4 #连接超时时间 mongo.connectTimeout=1000 #等待时间 mongo.maxWaitTime=1500 mongo.autoConnectRetry=true mongo.socketKeepAlive=true #Socket超时时间mongo.socketTimeout=1500 mongo.slaveOk=true

2.mongodb配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:mongo="http://www.springframework.org/schema/data/mongo"    xsi:schemaLocation="http://www.springframework.org/schema/context             http://www.springframework.org/schema/context/spring-context-4.0.xsd             http://www.springframework.org/schema/data/mongo             http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd             http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 --><mongo:mongo id="mongo" replica-set="${mongo.hostport}"><!-- 一些连接属性的设置 --><mongo:options  connections-per-host="${mongo.connectionsPerHost}"  threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}"  max-wait-time="${mongo.maxWaitTime}"  auto-connect-retry="${mongo.autoConnectRetry}"  socket-keep-alive="${mongo.socketKeepAlive}"  socket-timeout="${mongo.socketTimeout}"  slave-ok="${mongo.slaveOk}"  write-number="1"  write-timeout="0"  write-fsync="true" /></mongo:mongo><mongo:db-factory dbname="database" mongo-ref="mongo" /><!--创建数据库--><bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-arg ref="mongo" /><constructor-arg name="databaseName" value="local" /></bean></beans>

3.pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.innofarm</groupId><artifactId>innofarmAnalysis</artifactId><version>1.0.0-SNAPSHOT</version><packaging>war</packaging><description>Spring MVC + Spring + SpringJdbc</description><dependencies><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>4.1.3.RELEASE</version></dependency><!-- mongodb --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.3.0.RELEASE</version></dependency><dependency>          <groupId>org.mongodb</groupId>          <artifactId>mongo-java-driver</artifactId>          <version>2.11.1</version>      </dependency><!-- 连接池 --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency><!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>5.1.32</version></dependency><!-- c3p0 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- dbutils --><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.6</version></dependency><!-- JSP相关 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.30</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.4</version></dependency><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--Apache Shiro所需的jar包 --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.2</version></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><version>1.2.2</version></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.2.2</version></dependency><!-- 定时任务Quartz --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.1.3.RELEASE</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.2.1</version></dependency><!-- jxl --><dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><pluginManagement><plugins><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8083</port><path>/</path></configuration></plugin></plugins></pluginManagement></build></project>

4.加载properties文件

由于本项目既连接了mysql,又连接了mongodb,所以需要加载2个properties文件,加载多个properties文件时,不能用下面这种写法

<context:property-placeholder location="classpath:jdbc.properties" /><context:property-placeholder location="classpath:mongodb.properties" />
因为第一个会覆盖掉第二个,应该使用通配符的方式加载

<context:property-placeholder location="classpath:*.properties"/>


5.MongoDB测试类

package com.innofarm.controller;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.innofarm.dao.MemberDao;import com.innofarm.dto.UserEntity;//@Controller说明此类是控制层的类@RequestMapping("/mongodb")@Controllerpublic class MongoDB extends CommonController{@Resourceprivate MemberDao memberDao;@RequestMapping("/insert")public void insert(){UserEntity entity = memberDao.findOne("591a66eeee1cd315e4498115");System.out.println("entity="+entity);List<UserEntity> findAll = memberDao.findAll();System.out.println(findAll);memberDao._test();UserEntity userEntity = new UserEntity();userEntity.setFarmId("asasasasaas");userEntity.setUserAcnt("zmk");userEntity.setUserId("12323455");memberDao.insert(userEntity);    }/*public static void main(String[] args) {new MongoDB().insert();}*/}

6.MemberDao测试类

package com.innofarm.dao;import java.util.List;import java.util.Set;import java.util.regex.Pattern;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.stereotype.Repository;import com.innofarm.dto.UserEntity;import com.mongodb.DB;@Repositorypublic class MemberDao {@Autowired private MongoTemplate mongoTemplate;       public List<UserEntity> findAll() {        return getMongoTemplate().find(new Query(), UserEntity.class);       }    public void _test() {          Set<String> colls = this.mongoTemplate.getCollectionNames();          for (String coll : colls) {         System.out.println("=====================================CollectionName="+coll);        }          DB db = this.mongoTemplate.getDb();          System.out.println("db=" + db.toString());    }      public List<UserEntity> findByRegex(String regex) {         Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);             Criteria criteria = new Criteria("name").regex(pattern.toString());               return getMongoTemplate().find(new Query(criteria), UserEntity.class);       }    public void insert(UserEntity entity) {          this.mongoTemplate.insert(entity);      }      public UserEntity findOne(String id){         return getMongoTemplate().findOne(new Query(Criteria.where("_id").is(id)), UserEntity.class);       }    public MongoTemplate getMongoTemplate() {        return mongoTemplate;    }    /**     * @param mongoTemplate the mongoTemplate to set     */    public void setMongoTemplate(MongoTemplate mongoTemplate) {        this.mongoTemplate = mongoTemplate;    }}

7.测试结果