Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
在和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的配置和使用的介绍
Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例相关推荐
- CSE 支持spring 4/5 以及spring boot 1/2 maven组件依赖关系配置参考
[摘要] 本文介绍了CSE如何使用Spring 4或者Spring 5,以及在Spring Boot 1和Spring Boot 2中如何集成CSE,重点介绍了CSE提供的maven管理器,以及如何使 ...
- 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发
1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...
- java中mongodb中dao通用_Spring配置MongoDB及 构建通用Dao
(文章的编写虽然不至于花费很多时间,但转载请注明来源.本文参考了:http://liuluo129.iteye.com/blog/1994045,在此基础上进行了部分优化,及详细的介绍了流程) 1.首 ...
- linux装mongodb数据库,Linux下安装配置MongoDB数据库
说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.130 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/s ...
- spring整合hibernate的applicationContext.xml文件配置以及web.xml
applicationContext.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans ...
- Springboot使用Maven Profile和Spring Profile进行多环境配置
Springboot使用Maven Profile和Spring Profile进行多环境配置 目的 在实际的项目上,一般会分三种环境dev.test.prod来方便我们的开发和部署,要求我们在开发的 ...
- 图文细描:Maven Profiles 与 Spring Profiles 多环境配置
目录 前言 Spring Profiles使用 Maven Profiels使用 Spring Profiles和 Maven Profiles结合配置来打包 注意 前言 在项目开发过程中,我们离不开 ...
- RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ
什么是RabbitMQ 1.1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器.多用于分布式系统之间进行通信. ⚫ MQ,消息队列,存储消息的中间件 ⚫ ...
- 将Jersey与Spring整合
Spring提供了很多好处,并通过其依赖项注入机制,应用程序生命周期管理和Hibernate支持(仅举几例)促进了最佳实践. 另外,当您想拥有干净的类似于REST的服务器端JSON Api时,我发现J ...
最新文章
- 恭喜《软件随想录》得到了大家的一致认可!
- linux centos7 设置开机 进入命令行 不进入图形界面
- svm 的提前处理
- 如何找出Fiori frontend server的systen ID
- yii2 的 restful 接口书写自定义方法
- 计算机组成原理李玉玲,2005年高等教育国家级教学成果奖初审结果公告-山东大学.DOC...
- 电子政务发展现状的调研分析(转)
- python计算两个正整数的和差积商_已知两个正整数的和与积求这两个数
- java异常的捕获和处理
- tql触发器修改记录时同步更新_运维日记|MySQL数据单向同步方案对比
- Tomcat + Spring MVC + HttpClient:怎样使用PUT和PATCH方法传递数据
- Rust: 如何交换Vec类型中数据的位置?
- 统计学的Python实现-013:频度分布表
- 品质qc工程图_QC工程图_(品管).xls
- 史上最全运放运算放大器知识讲解(附主流厂商)
- 欧洲杯赛场“中国元素”引观众热议;万达两家酒店在延安红街开业窑洞房最具特色 | 美通社头条...
- 关于Ubuntu18.04+win10双系统开机引导错误的解决方法
- java pdf to word_java pdf转word 高效不失真
- 【Python 每日一技】根据序列中每个元素共同的数据域进行分组迭代
- 【行为分析】(二)前端埋点实现及原理分析
热门文章
- Python面试题(三)(爬虫方面)
- VTK:AngleWidget2D用法实战
- JavaScript实现rabin-karp算法(附完整源码)
- boost::hana::basic_tuple用法的测试程序
- GDCM:gdcm::ModuleEntry的测试程序
- ITK:写一个TIFF图像
- ITK:Mersenne Twister随机整数生成器
- VTK:Utilities之Animation
- VTK:Qt之SideBySideRenderWindowsQt
- VTK:相互作用之InteractorStyleTerrain