在和Spring和MongoDB进行整合的时候需要如下三个jar,分别是:
spring-data-commons
spring-data-mongodb
mongo-java-driver
下面讲解Spring和MongoDB2.x进行整合的Spring配置(下面案例以下面的方式进行说明:)
Maven的Pom文件的配置如下:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.10.1</version>
</dependency>
配置好Pom之后,在pom.xml所在的项目位置处执行如下命令:
mvn -Pall eclipse:eclipse
注意:正对mongoDB3.4.2的maven的依赖配置如下:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.13.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.10.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.3.0</version>
</dependency>
如果用到分页相关的插件,可以按照如下方式配置maven依赖
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.3</version>
</dependency>
然后到spring的配置处进行如下配置:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
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-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-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/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
<!-- 缓存配置
<ehcache:annotation-driven cache-manager="cacheManager" />
<bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="cacheManagerFactory" />
</bean>
-->
<!-- 打开注解 -->
<context:annotation-config />
<!-- <aop:aspectj-autoproxy/> -->
<!-- 打开自动扫描 -->
<context:component-scan base-package="cn.com.hbny.docdetection" />
<!-- 定时器驱动 -->
<task:annotation-driven/>
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties,classpath:mongodb.properties" />
<!--
以下用于配置多数据源
配置parentDataSource的父bean,再配置多个数据源继承这个bean,对driverClassName、
url、username、password等数据源连接参数进行各自的重写、例如mysqlDataSource、
在DataSource bean中要注入所要切换的数据、并且设置默认的数据源
-->
<!--<bean id="parentDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"></bean>
创建MySQL对应的jdbc数据源
<bean id="mysqlDataSource" parent="parentDataSource">
<property name="driverClassName" value="${mysqlDriver}"></property>
<property name="url" value="${mysqlUrl}"></property>
<property name="username" value="${mysqlUsername}"></property>
<property name="password" value="${mysqlPassword}"></property>
</bean>
-->
<!-- 数据源 org.apache.commons.dbcp.BasicDataSource com.alibaba.druid.pool.DruidDataSource -->
<bean id="parentDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 初始化连接大小 -->
<property name="initialSize" value="8" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="32" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="4" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<!--<property name="validationQuery"><value>SELECT 1</value></property>-->
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />
<!-- 监控数据库 -->
<property name="filters" value="mergeStat" />
</bean>
<!-- 创建MySQL对应的jdbc数据源 -->
<bean id="mysqlDataSource" parent="parentDataSource">
<property name="driverClassName" value="${mysqlDriver}"></property>
<property name="url" value="${mysqlUrl}"></property>
<property name="username" value="${mysqlUsername}"></property>
<property name="password" value="${mysqlPassword}"></property>
</bean>
<!--创建jdbc数据源 -->
<!-- <bean id="oracleDataSource" parent="parentDataSource">
<property name="driverClassName" value="${oracleDriver}" />
<property name="url" value="${oracleUrl}" />
<property name="username" value="${oracleUsername}" />
<property name="password" value="${oraclePassword}" />
</bean> -->
<!-- 注意下面的com.ucap.tpl.mapper.base.impl.DataSources是自己定义的数据源-->
<!-- 注意下面的cn.com.hbny.docdetection.mapper.base.impl.DataSources是自己定义的数据源-->
<bean id="dataSource" class="cn.com.hbny.docdetection.mapper.base.impl.DataSources">
<property name="dbType" value="${dbType}"></property>
<property name="targetDataSources">
<map key-type="java.lang.String">
<!-- 注意下面的key的值要和DataSourceInstances中定义的值相同-->
<entry value-ref="mysqlDataSource" key="MYSQL"></entry>
<!--<entry value-ref="oracleDataSource" key="ORACLE"></entry>-->
</map>
</property>
<property name="defaultTargetDataSource" ref="mysqlDataSource"></property>
</bean>
<!-- 配置druid监控spring jdbc -->
<bean id="druid-stat-interceptor"
class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"
proxy-target-class="true"/>
<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations">
<list>
<!-- 配置Mapper文件 -->
<value>classpath:sqlmaps/${dbType}/*.xml</value>
</list>
</property>
</bean>
<!-- 针对方式一 -->
<!-- 下面是方式1对应的配置 -->
<!-- http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd -->
<!--
<mongo:mongo host="127.0.0.1" port="27017"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo"/>
<constructor-arg name="databaseName" value="docdetection"/>
</bean>
-->
<!-- *******************************************方式2:开始***************************** -->
<!-- 方式2的配置的时候需要的配置:
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
-->
<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
<mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}">
<!-- 一些连接属性的设置 -->
<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的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory dbname="docdetection" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="docdetection" />
</bean>
<!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->
<mongo:mapping-converter base-package="cn.com.hbny.docdetection.mongodb.beans" />
<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<mongo:repositories base-package="cn.com.hbny.docdetection" />
<!-- *******************************************方式2:结束***************************** -->
<!-- 方式3配置 -->
<!--
对应的schema的配置如下:
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.10.xsd
-->
<!-- mongodb 的基本配置 -->
<!-- <mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}" /> -->
<!-- <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${userCredentials.username}"/>
<constructor-arg name="password" value="${userCredentials.password}"/>
</bean> -->
<!-- template 配置 -->
<!-- <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" /> -->
<!-- 数据库名称 -->
<!-- <constructor-arg value="docdetection" /> -->
<!-- 权限 -->
<!-- <constructor-arg ref="userCredentials" />
</bean> -->
</beans>
其中mongodb可以有自己单独的配置文件,其中mongodb.properties的配置如下,注意下面的mongo.host和mongo.hostport根据情况选择自己需要的
mongo.host=127.0.0.1
#端口号
mongo.port=27017
#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
下面是MongoDB的基础操作类:
package cn.com.hbny.docdetection.mongodb.base;
import java.util.List;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import com.github.pagehelper.PageInfo;
/**
* mongodb 基础操作类
* @author 涂作权 2017年2月26日
* @param <T>
*/
public interface MongodbDao<T> {
/**
* \brief 增加对象
* @param t
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建接口
*/
public void save(T t);
/**
* \brief 插入一个list集合对象
* @param list
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void insertAll(List<T> list);
/**
* \brief 删除对象
* @param t
* @attention 方法的使用注意事项
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void delete(T t);
/**
* 根据id 删除对象
*
* @param id
*/
public void deleteById(String id);
/**
* 根据条件删除
*/
public void delete(Query query);
/**
* 删除该collection 的所有的数据
*/
public void deleteAll();
/**
* \brief 根据条件更新数据信息
* @param query
* @param update
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void update(Query query, Update update);
/**
* \brief 查询所有
* @return
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public List<T> findAll();
/**
* 根据查询query 查找list
*
* @param query
* @return
*/
public List<T> find(Query query);
/**
* 按照字段排序 - 顺序 <br/>
* @param query 查询条件 <br/>
* @param properties 排序字段 <br/>
* @return
*/
public List<T> findWithOrderAsc(Query query, String... properties);
/**
* 按照字段排序 - 逆序 <br/>
* @param query 查询条件 <br/>
* @param properties 排序字段 <br/>
* @return
*/
public List<T> findWithOrderDesc(Query query, String... properties);
/**
* 根据查询query 查找一个对象
*
* @param query
* @return
*/
public T findOne(Query query);
/**
* 根据 id 查询对象
*
* @param id
* @return
*/
public T findById(String id);
/**
* 根据id 和 集合名字查询对象
*
* @param id
* @param collectionName
* @return
*/
public T findById(String id, String collectionName);
/**
* 查询分页 tips:[不要skip 太多的页数,如果跳过太多会严重影响效率。最大不要skip 20000页]
* @param page
* @param query
* @return
*/
public PageInfo<T> findPage(PageInfo<T> page, Query query);
/**
* \brief 统计条数
* @param query
* @return
* @attention 方法的使用注意事项
* @author toto
* @date 2017年2月25日
* @note begin modify by 修改人 修改时间 修改内容摘要说明
*/
public long count(Query query);
/**
* 获取需要操作的实体类class <br/>
* 例如: StudentScoreDao extends MongodbDao <b><StudentScore></b> <br/>
* 返回的是 <b>StudentScore</b> 的Class
*
* @return
*/
public Class<T> getEntityClass();
/**
* 获取collection的名字,默认是dao范型T的名字 <br/>
* 例如: StudentScoreDao extends MongodbDao <b><StudentScore></b> <br/>
* 则返回的名字是:<b>StudentScore</b>
*
* @return
*/
public String getCollectionName();
}
MongodbDao的实现类MongodbDaoImpl:
package cn.com.hbny.docdetection.mongodb.base.impl;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
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.data.mongodb.core.query.Update;
import com.github.pagehelper.PageInfo;
import cn.com.hbny.docdetection.mongodb.base.MongodbDao;
import cn.com.hbny.docdetection.utils.ReflectionUtils;
/**
* mongodb 基础操作类
* @author chenpengye 2015年12月21日 下午11:33:06
* @param <T>
*/
public class MongodbDaoImpl<T> implements MongodbDao<T> {
private static final Logger logger = LoggerFactory.getLogger(MongodbDaoImpl.class);
//private static final int DEFAULT_SKIP = 0;
//private static final int DEFAULT_LIMIT = 200;
@Autowired
protected MongoTemplate mongoTemplate;
/**
* \brief 增加对象
* @param t
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建接口
*/
public void save(T t) {
mongoTemplate.save(t);
logger.debug("save entity: {}", t);
}
/**
* \brief 插入一个list集合对象
* @param list
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void insertAll(List<T> list) {
mongoTemplate.insertAll(list);
}
/**
* \brief 删除对象
* @param t
* @attention 方法的使用注意事项
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void delete(T t) {
mongoTemplate.remove(t);
}
/**
* 根据id 删除对象
*
* @param id
*/
public void deleteById(String id) {
Criteria criteria = Criteria.where("id").is(id);
Query query = new Query(criteria);
mongoTemplate.remove(query, this.getEntityClass());
}
/**
* 根据条件删除
*/
public void delete(Query query) {
mongoTemplate.remove(query, this.getEntityClass());
}
/**
* 删除该collection 的所有的数据
*/
public void deleteAll() {
mongoTemplate.dropCollection(this.getEntityClass());
}
/**
* \brief 根据条件更新数据信息
* @param query
* @param update
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public void update(Query query, Update update) {
mongoTemplate.findAndModify(query, update, this.getEntityClass());
}
/**
* \brief 查询所有
* @return
* @attention
* @author toto
* @date 2017年2月25日
* @note begin modify by 涂作权 2017年2月25日 原始创建
*/
public List<T> findAll(){
return mongoTemplate.findAll(this.getEntityClass());
}
/**
* 根据查询query 查找list
*
* @param query
* @return
*/
public List<T> find(Query query) {
return mongoTemplate.find(query, this.getEntityClass());
}
/**
* 按照字段排序 - 顺序 <br/>
* @param query 查询条件 <br/>
* @param properties 排序字段 <br/>
* @return
*/
public List<T> findWithOrderAsc(Query query, String... properties){
Sort sort = new Sort(Direction.ASC, properties);
query.with(sort);
return mongoTemplate.find(query, this.getEntityClass());
}
/**
* 按照字段排序 - 逆序 <br/>
* @param query 查询条件 <br/>
* @param properties 排序字段 <br/>
* @return
*/
public List<T> findWithOrderDesc(Query query, String... properties){
Sort sort = new Sort(Direction.DESC, properties);
query.with(sort);
return mongoTemplate.find(query, this.getEntityClass());
}
/**
* 根据查询query 查找一个对象
*
* @param query
* @return
*/
public T findOne(Query query) {
return mongoTemplate.findOne(query, this.getEntityClass());
}
/**
* 根据 id 查询对象
*
* @param id
* @return
*/
public T findById(String id) {
return mongoTemplate.findById(id, this.getEntityClass());
}
/**
* 根据id 和 集合名字查询对象
*
* @param id
* @param collectionName
* @return
*/
public T findById(String id, String collectionName) {
return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
}
/**
* 查询分页 tips:[不要skip 太多的页数,如果跳过太多会严重影响效率。最大不要skip 20000页]
* @param page
* @param query
* @return
*/
public PageInfo<T> findPage(PageInfo<T> page, Query query) {
long count = this.count(query);
page.setTotal(count);
int pageNumber = page.getPageNum();
int pageSize = page.getPageSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List<T> list = this.find(query);
page.setList(list);
return page;
}
public long count(Query query) {
return mongoTemplate.count(query, this.getEntityClass());
}
/**
* 获取需要操作的实体类class <br/>
* 例如: StudentScoreDao extends MongodbDao <b><StudentScore></b> <br/>
* 返回的是 <b>StudentScore</b> 的Class
*
* @return
*/
public Class<T> getEntityClass() {
return ReflectionUtils.getSuperClassGenricType(getClass());
}
/**
* 获取collection的名字,默认是dao范型T的名字 <br/>
* 例如: StudentScoreDao extends MongodbDao <b><StudentScore></b> <br/>
* 则返回的名字是:<b>StudentScore</b>
*
* @return
*/
public String getCollectionName() {
return getEntityClass().getSimpleName();
}
}
下面编写要存的文档对象StudentScore.java
package cn.com.hbny.docdetection.mongodb.beans;
import java.io.Serializable;
import java.util.List;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @brief StudentScore.java 分数测试
* @attention 使用注意事项
* @author toto
* @date 2017年2月25日
* @note begin modify by 修改人 修改时间 修改内容摘要说明
*/
@Document(collection = "studentScores")
public class StudentScore implements Serializable {
private static final long serialVersionUID = 8743196073520676022L;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* 学生姓名
*/
private String username;
/**
* 学生成绩
*/
private List<Double> scoreList;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List<Double> getScoreList() {
return scoreList;
}
public void setScoreList(List<Double> scoreList) {
this.scoreList = scoreList;
}
@Override
public String toString() {
return "StudentScore [id=" + id + ", username=" + username + ", scoreList=" + scoreList + "]";
}
}
StudentScoreDao.java的代码如下:
package cn.com.hbny.docdetection.mongodb.studentscore.dao;
import cn.com.hbny.docdetection.mongodb.base.MongodbDao;
public interface StudentScoreDao<StudentScore> extends MongodbDao<StudentScore> {
}
StudentScoreDaoImpl.java的代码如下:
package cn.com.hbny.docdetection.mongodb.studentscore.dao.impl;
import org.springframework.stereotype.Repository;
import cn.com.hbny.docdetection.mongodb.base.impl.MongodbDaoImpl;
import cn.com.hbny.docdetection.mongodb.beans.StudentScore;
import cn.com.hbny.docdetection.mongodb.studentscore.dao.StudentScoreDao;
/**
* 继承MongodbDao<br/>
* 此类对StudentScore对增删改查和分页方法都已经有了<br/>
* @author chenpengye
* 2016年1月4日 下午10:04:25
*/
@Repository
public class StudentScoreDaoImpl extends MongodbDaoImpl<StudentScore>
implements StudentScoreDao<StudentScore> {
}
MongoDBController的代码结构如下:
package cn.com.hbny.docdetection.mongodb.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.com.hbny.docdetection.controller.base.BaseController;
import cn.com.hbny.docdetection.mongodb.beans.StudentScore;
import cn.com.hbny.docdetection.mongodb.studentscore.dao.StudentScoreDao;
import cn.com.hbny.docdetection.utils.UUIDGenerator;
@Controller(value = "mongoDBController")
@RequestMapping(value = "/mongodb/mongoDBController",
method = {RequestMethod.GET,RequestMethod.POST})
public class MongoDBController extends BaseController{
@Resource
private StudentScoreDao<StudentScore> studentScoreDao;
//@Autowired
//protected MongoTemplate mongoTemplate;
@ResponseBody
@RequestMapping(value = "/test")
public Map<String, Object> test() {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
StudentScore studentScore = new StudentScore();
studentScore.setId(UUIDGenerator.generate());
List<Double> scoreList = new ArrayList<Double>();
scoreList.add(92.0);
scoreList.add(55.0);
scoreList.add(100.0);
scoreList.add(70.0);
studentScore.setScoreList(scoreList);
studentScore.setUsername("张三");
studentScoreDao.save(studentScore);
// List<StudentScore> scores = new ArrayList<StudentScore>();
// for(int i = 0; i <= 20; i++) {
// StudentScore ss = new StudentScore();
// ss.setId(UUIDGenerator.generate());
//
// List<Double> scoresList = new ArrayList<Double>();
// scoresList.add(10.0 + i);
// scoresList.add(14.0 + i);
// scoresList.add(30.0 + i);
// scoresList.add(20.0 + i);
// ss.setScoreList(scoresList);
//
// scores.add(ss);
// }
// studentScoreDao.insertAll(scores);
studentScoreDao.deleteById("849e1838d18e46989a4fb7cd6c2bac75");
studentScoreDao.deleteById("7567f240c2cc4b15a673c46e27d4c3d4");
studentScoreDao.deleteById("7cd824539640487ca0d09f39b3f403c6");
studentScoreDao.deleteById("7f60cc24d9954c1cb196cc3993ec9654");
studentScoreDao.deleteById("4ebf7d0812294a5bba8053d849f42b18");
List<StudentScore> studentScores = studentScoreDao.findAll();
for (StudentScore ss : studentScores) {
System.out.println(ss.toString());
}
resultMap.put("flag", "success");
} catch (Exception e) {
resultMap.put("flag", "error");
e.printStackTrace();
}
return resultMap;
}
}
浏览器输入的地址是:http://127.0.0.1:8080/docdetection/mongodb/mongoDBController/test.action
控制台中输出的结果如下:
以上是MongoDB的配置和使用的介绍
相关资源:springMVC mybitis mongodb maven整合