假设现在我们已经安装好了mongodb,并且都熟悉spring项目的配置。
spring 配置文件 spring-context.xml
与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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <context:property-placeholder ignore-resource-not-found="false" location="classpath:mongodb.properties" /> <bean class="com.qing.utils.PropertyUtils"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <property name="ignoreResourceNotFound" value="false" /> <property name="locations"> <list> <value>classpath*:/mongodb.properties</value> </list> </property> </bean> <context:component-scan base-package="com.qing"/> <mongo:mongo id="mongo" replica-set="${mongo.host}"> <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 id="mongoDbFactory" dbname="${mongo.database}" mongo-ref="mongo" username="${mongo.username}" password="${mongo.password}"/> <mongo:mapping-converter id="mongoConverter" base-package="com.qing.core.entity"> <mongo:custom-converters base-package="com.qing.core.entity" /> </mongo:mapping-converter> <bean id="nearest" class="com.mongodb.TaggableReadPreference.NearestReadPreference"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory" /> <constructor-arg ref="mongoConverter" /> <property name="writeConcern" value="SAFE" /> <property name="readPreference" ref="nearest" /> </bean> <mongo:repositories base-package="com.qing.core.repository" /> </beans>
mongodb.properties的属性配置文件
#The number of connections per host agreed, when the connection pool is used up, will be blocked, the default value is 10 --int mongo.connectionsPerHost=10 #multiplier for connectionsPerHost for # of threads that can block if connectionsPerHost is 10, and threadsAllowedToBlockForConnectionMultiplier is 5, then 50 threads can block more than that and an exception will be throw --int mongo.threadsAllowedToBlockForConnectionMultiplier=5 #Blocked thread connections from the connection pool gets the longest waiting time (MS) --int mongo.maxWaitTime=0 #To establish a socket connection when timeout (MS), the default value is 0 (infinite) mongo.connectTimeout=0 #Whether the control system in the event of a connection error retry,Defaults to false mongo.autoConnectRetry=false #This controls whether or not to have socket keep alive turned on (SO_KEEPALIVE). defaults to false --boolean mongo.socketKeepAlive=false #Socket timeout; this value will be passed to the Socket.setSoTimeout (int). The default value is 0 (infinite) --int mongo.socketTimeout=0 #Indicates whether the promised to drive from the secondary nodes or the slave node reads the data, defaults to false mongo.slaveOk=false mongo.database=mongodbtest mongo.host=192.168.23.4:27017 mongo.username=mongo mongo.password=123456
编写实体类、Controller、Service、Dao相关
实体类
import java.math.BigInteger; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; @Document(collection = "student") public class Student extends BaseDocument<BigInteger> implements Comparable<Student> { private static final long serialVersionUID = -3711325228602088792L; @Field("userId") private String userId; @Field("userName") private String userName; @Field("password") private String password; @Field("mobilPhone") private String mobilPhone; /////////get/set方法省略/////// @Override public int compareTo(Student o) { if (o == null) return -1; return this.userId.compareTo(o.getUserId()); } }
import java.io.Serializable; import org.springframework.data.annotation.Id; /** * <p> 抽象实体基类,提供统一的ID,和相关的基本功能方法 */ public abstract class BaseDocument<ID extends Serializable> extends AbstractDocument<ID> { @Id private ID id; @Override public ID getId() { return id; } @Override public void setId(ID id) { this.id = id; } }
import java.io.Serializable; /** * 抽象实体基类 */ public abstract class AbstractDocument<ID extends Serializable> implements Serializable { /** * Returns the identifier of the document. * * @return the id */ public abstract ID getId(); /** * Sets the id of the document. * * @param id the id to set */ public abstract void setId(final ID id); /* * (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (this.getId() == null || obj == null || !(this.getClass().equals(obj.getClass()))) { return false; } AbstractDocument<?> that = (AbstractDocument<?>) obj; return this.getId().equals(that.getId()); } /* * (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return this.getId() == null ? 0 : this.getId().hashCode(); } }
dao
import java.math.BigInteger; import java.util.List; import org.springframework.data.mongodb.repository.Query; import org.springframework.data.repository.CrudRepository; import com.qing.core.entity.Student; public interface StudentRepository extends CrudRepository<Student, BigInteger>{ List<Student> findByUserIdAndUserName(String userId,String userName); @Query("{userId:?0,$or:[{userName:{ $regex:?1}},{password:{ $regex:?1}}]}") List<Student> findStudentByUserIdAndUserName(String userId, String userName); }
service
@Service public class StudentService { @Autowired private StudentRepository studentRepository; @Autowired MongoTemplate mongoTemplate; public Message create(Student stu) { this.studentRepository.save(stu); Message message = new Message(); message.setData(stu); return message; } public Message delete(Student stu) { // this.studentRepository.delete(stu); mongoTemplate.remove(new Query(Criteria.where("userName").is(stu.getUserName())), Student.class); Message message = new Message(); message.setData(stu); return message; } public void update(Student stu) { Update update = new Update(); update.set("password", stu.getPassword()); mongoTemplate.updateFirst(new Query(Criteria.where("userId").is(stu.getUserId())), update, Student.class); } public List<Student> findByUserIdAndUserName(Student stu) { String userId = stu.getUserId(); String userName = stu.getUserName(); List<Student> studentList = studentRepository.findByUserIdAndUserName(userId, userName); return studentList; } public List<Student> findStudents(Student stu) { String userId = stu.getUserId(); String userName = stu.getUserName(); List<Student> studentList = studentRepository.findStudentByUserIdAndUserName(userId, userName); return studentList; } }
controller
这个类就自己发挥写吧,就是springmvc的controller调用service层。
相关推荐
这个例子对于初学者来说,是一个很好的起点,能够帮助理解Spring与MongoDB的集成原理和实践方法。 总的来说,Spring和MongoDB的结合提供了一个高效、灵活且易于使用的数据存储解决方案,适用于那些需要处理大量非...
spring 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、shiro等 #### 软件架构 基于Java 1.8 #### Spring 版本 - 5.0.8.RELEASE #### 模块说明 - ...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地创建出生产级别的基于 Spring 的应用程序。 在“spring boot 简单案例下载”中,我们可以推测这是一个包含了...
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块...
本案例主要介绍了如何在 Spring 4.1.3.RELEASE 版本下集成 MongoDB,并通过 Spring Data MongoDB 1.8.0 进行简单的数据操作。 #### 二、环境准备 - **Spring版本**:4.1.3.RELEASE - **Spring Data MongoDB版本**...
通过这个项目,开发者可以深入理解Spring MVC、Maven和MongoDB的集成使用,掌握Web应用的开发流程,以及非关系型数据库在实际项目中的应用。同时,该项目也是学习Java Web开发和分布式数据存储的一个宝贵实践案例。
Spring Boot的集成特性使得与各种数据库(如MongoDB)的交互变得简单。 MongoDB是一个非关系型数据库(NoSQL),以其灵活性、高可扩展性和高性能而受到青睐。在图片存储方面,MongoDB的GridFS功能特别适合。GridFS...
在这个项目中,开发者可能通过Spring Data MongoDB库来简化与MongoDB的集成,实现对数据的CRUD操作。 描述中提到,这是一个关于一对多关系的NoSQL演示项目,意味着该项目将展示如何在不使用传统的关系型数据库的...
在整合Spring Boot、GraphQL和MongoDB的过程中,通常会采用Spring Data MongoDB来实现Spring Boot与MongoDB的集成,使得操作数据库变得更加便捷。同时,可以利用Spring Boot的WebFlux模块结合GraphQL的参考实现如...
总结来说,ZhiZu Shop是一个集成了Spring、MongoDB等现代技术的网上商城系统,它展现了如何利用这些工具实现高效、可扩展的电商应用。对于学习和理解Web系统开发的开发者,这是一个很好的案例,可以从中学到如何构建...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地构建一个独立的、生产级别的基于 Spring 的应用程序。 在这个测试案例中,我们将探讨如何使用 Spring Boot ...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,让开发者可以快速地创建出稳定且生产级别的基于 Spring 的服务。 在"spring bootweb案例"中,我们关注的是如何使用 Spring Boot 构建 Web...
』Spring Boot 2快速教程WebFlux集成Thymeleaf(五)Spring Boot 2快速教程WebFlux集成Mongodb(四)Spring Boot 2快速教程WebFlux Restful CRUD实践(三)Spring Boot 2快速教程WebFlux快速入门(二)Spring Boot 2...
在Spring Boot 2.x中集成MongoDB,首先需要在`pom.xml`文件中添加`spring-boot-starter-data-mongodb`依赖,该依赖基于`spring-data-mongodb`,使得Spring Boot可以轻松地与MongoDB进行交互。以下是如何在`pom.xml`...
本资源中的"spring入门到精通完整版源码",可以帮助开发者通过实际案例学习Spring的使用。通过阅读和分析源码,可以更深入地理解Spring框架的内部工作原理,提升解决问题的能力。 总结,"spring入门到精通完整版...
对于NoSQL数据库,如MongoDB,Spring Data MongoDB提供了与文档数据库交互的接口和操作工具。类似地,Spring Data Neo4j则为图数据库提供了支持。 7. **搜索引擎集成** Spring Data Elasticsearch使得集成Elastic...
- [spring-boot-redis](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-redis):Spring Boot 集成 Redis 示例 - [spring-boot-jpa]...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者可以快速地创建出生产级别的、基于 Spring 的 Java 应用。 在 "springboot 简单登陆实例" 中,我们关注的核心知识点是 ...
本项目中的源码,详细展示了这些技术的集成与使用,从初始化Spring Boot项目,到配置MongoDB数据源,再到定义Repository接口并使用QueryDSL编写查询,最后到启用Swagger2进行API文档化,每一步都清晰可见。...