mongodb 整合spring

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:  第4章 MongoDB整合Spring (黎明你好原创作品,转载请注明) 4.1 创建maven项目 4.1.1 repositories 创建maven项目,其中repositories使用spring的maven库:   Java代码   <repositories>       <reposi

 第4章 MongoDB整合Spring

(黎明你好原创作品,转载请注明)

4.1 创建maven项目

4.1.1 repositories

创建maven项目,其中repositories使用spring的maven库:

 

Java代码   收藏代码
  1. <repositories>  
  2.     <repository>  
  3.         <id>central</id>  
  4.         <name>Maven Central</name>  
  5.         <url>http://repo1.maven.org/maven2/</url>  
  6.     </repository>  
  7.     <repository>  
  8.         <id>spring-release</id>  
  9.         <name>Spring Maven Release Repository</name>  
  10.         <url>http://repo.springsource.org/libs-release</url>  
  11.     </repository>  
  12.     <repository>  
  13.         <id>atlassian-m2-repository</id>  
  14.         <url>https://m2proxy.atlassian.com/repository/public</url>  
  15.     </repository>  
  16. </repositories>  

 

4.1.2 Dependencies

使用到的jar包:

 

Java代码   收藏代码
  1. <dependencies>  
  2.     <dependency>  
  3.         <groupId>javax.servlet</groupId>  
  4.         <artifactId>servlet-api</artifactId>  
  5.         <version>2.5</version>  
  6.         <type>jar</type>  
  7.         <scope>provided</scope>  
  8.     </dependency>  
  9.     <dependency>  
  10.         <groupId>org.slf4j</groupId>  
  11.         <artifactId>slf4j-api</artifactId>  
  12.         <version>1.6.1</version>  
  13.         <type>jar</type>  
  14.         <scope>compile</scope>  
  15.     </dependency>  
  16.     <dependency>  
  17.         <groupId>org.slf4j</groupId>  
  18.         <artifactId>slf4j-log4j12</artifactId>  
  19.         <version>1.7.5</version>  
  20.         <type>jar</type>  
  21.         <scope>runtime</scope>  
  22.     </dependency>  
  23.     <dependency>  
  24.         <groupId>org.mongodb</groupId>  
  25.         <artifactId>mongo-java-driver</artifactId>  
  26.         <version>2.10.1</version>  
  27.         <type>jar</type>  
  28.         <scope>compile</scope>  
  29.     </dependency>  
  30.     <dependency>  
  31.         <groupId>org.springframework.data</groupId>  
  32.         <artifactId>spring-data-mongodb</artifactId>  
  33.         <version>1.2.1.RELEASE</version>  
  34.         <type>jar</type>  
  35.         <scope>compile</scope>  
  36.     </dependency>  
  37.     <dependency>  
  38.         <groupId>org.springframework.data</groupId>  
  39.         <artifactId>spring-data-mongodb-cross-store</artifactId>  
  40.         <version>1.2.1.RELEASE</version>  
  41.         <type>jar</type>  
  42.         <scope>compile</scope>  
  43.     </dependency>  
  44.     <dependency>  
  45.         <groupId>org.springframework.data</groupId>  
  46.         <artifactId>spring-data-mongodb-log4j</artifactId>  
  47.         <version>1.2.1.RELEASE</version>  
  48.         <type>jar</type>  
  49.         <scope>compile</scope>  
  50.     </dependency>  
  51. </dependencies>  

 

 

4.2 添加spring配置文件

spring的配置文件applicationContext.xml

 

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mongo="http://www.springframework.org/schema/data/mongo"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.         http://www.springframework.org/schema/data/mongo       
  9.         http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd   
  10.         http://www.springframework.org/schema/context  
  11.         http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  12.   
  13.     <context:component-scan base-package="liming.mongodb.example" />  
  14.   
  15.     <mongo:mongo host="127.0.0.1" port="27017" />  
  16.   
  17.     <!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->  
  18.     <mongo:db-factory dbname="student" mongo-ref="mongo" />  
  19.   
  20.     <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->  
  21.     <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
  22.         <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />  
  23.     </bean>  
  24.   
  25.     <!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->  
  26.     <mongo:mapping-converter base-package="climing.mongodb.example.data.model" />  
  27.   
  28.     <!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->  
  29.     <mongo:repositories base-package="liming.mongodb.example.data.impl" />  
  30.   
  31.     <context:annotation-config />  
  32.   
  33. </beans>  

 

 

 

4.3 增删改查

Userl实现的增删改查:

4.3.1UserEntity

 

Java代码   收藏代码
  1. package liming.mongodb.example.data.model;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.springframework.data.annotation.Id;  
  6. import org.springframework.data.mongodb.core.mapping.Document;  
  7.   
  8. @Document(collection = "user")  
  9. public class UserEntity {  
  10.   
  11.     @Id  
  12.     private String id;  
  13.     private NameEntity name;  
  14.     private int age;  
  15.     private int works;  
  16.     private Date birth;  
  17.     private String password;  
  18.     private String regionName;  
  19.     private String[] special;  
  20.   
  21.     public String getId() {  
  22.         return id;  
  23.     }  
  24.   
  25.     public void setId(String id) {  
  26.         this.id = id;  
  27.     }  
  28.   
  29.     public NameEntity getName() {  
  30.         return name;  
  31.     }  
  32.   
  33.     public void setName(NameEntity name) {  
  34.         this.name = name;  
  35.     }  
  36.   
  37.     public int getAge() {  
  38.         return age;  
  39.     }  
  40.   
  41.     public void setAge(int age) {  
  42.         this.age = age;  
  43.     }  
  44.   
  45.     public int getWorks() {  
  46.         return works;  
  47.     }  
  48.   
  49.     public void setWorks(int works) {  
  50.         this.works = works;  
  51.     }  
  52.   
  53.     public Date getBirth() {  
  54.         return birth;  
  55.     }  
  56.   
  57.     public void setBirth(Date birth) {  
  58.         this.birth = birth;  
  59.     }  
  60.   
  61.     public String getPassword() {  
  62.         return password;  
  63.     }  
  64.   
  65.     public void setPassword(String password) {  
  66.         this.password = password;  
  67.     }  
  68.   
  69.     public String getRegionName() {  
  70.         return regionName;  
  71.     }  
  72.   
  73.     public void setRegionName(String regionName) {  
  74.         this.regionName = regionName;  
  75.     }  
  76.   
  77.     public String[] getSpecial() {  
  78.         return special;  
  79.     }  
  80.   
  81.     public void setSpecial(String[] special) {  
  82.         this.special = special;  
  83.     }  
  84.   
  85. }  

 

 

4.3.2 NameEntity

 

Java代码   收藏代码
  1. package liming.mongodb.example.data.model;  
  2.   
  3. public class NameEntity {  
  4.   
  5.     private String username;  
  6.   
  7.     private String nickname;  
  8.   
  9.     public String getUsername() {  
  10.         return username;  
  11.     }  
  12.   
  13.     public void setUsername(String username) {  
  14.         this.username = username;  
  15.     }  
  16.   
  17.     public String getNickname() {  
  18.         return nickname;  
  19.     }  
  20.   
  21.     public void setNickname(String nickname) {  
  22.         this.nickname = nickname;  
  23.     }  
  24.   
  25. }  

 

 

4.3.3 UserDao

 

Java代码   收藏代码
  1. package liming.mongodb.example.data;  
  2.   
  3. import java.util.List;  
  4.   
  5. import liming.mongodb.example.data.model.UserEntity;  
  6.   
  7. import org.springframework.transaction.annotation.Transactional;  
  8.   
  9. @Transactional  
  10. public interface UserDao {  
  11.   
  12.     public abstract void _test();  
  13.   
  14.     public abstract void createCollection();  
  15.   
  16.     public abstract List<UserEntity> findList(int skip, int limit);  
  17.   
  18.     public abstract List<UserEntity> findListByAge(int age);  
  19.   
  20.     public abstract UserEntity findOne(String id);  
  21.   
  22.     public abstract UserEntity findOneByUsername(String username);  
  23.   
  24.     public abstract void insert(UserEntity entity);  
  25.   
  26.     public abstract void update(UserEntity entity);  
  27.   
  28. }  

 

 

4.3.4 UserDaoImpl

 

Java代码   收藏代码
  1. package liming.mongodb.example.data.impl;  
  2.   
  3. import java.util.List;  
  4. import java.util.Set;  
  5.   
  6. import liming.mongodb.example.data.UserDao;  
  7. import liming.mongodb.example.data.model.UserEntity;  
  8.   
  9. import org.slf4j.Logger;  
  10. import org.slf4j.LoggerFactory;  
  11. import org.springframework.beans.factory.annotation.Autowired;  
  12. import org.springframework.data.domain.Sort;  
  13. import org.springframework.data.domain.Sort.Direction;  
  14. import org.springframework.data.domain.Sort.Order;  
  15. import org.springframework.data.mongodb.core.MongoTemplate;  
  16. import org.springframework.data.mongodb.core.query.Criteria;  
  17. import org.springframework.data.mongodb.core.query.Query;  
  18. import org.springframework.data.mongodb.core.query.Update;  
  19. import org.springframework.stereotype.Repository;  
  20.   
  21. import com.mongodb.DB;  
  22.   
  23. @Repository  
  24. public class UserDaoImpl implements UserDao {  
  25.   
  26.     public static final Logger logger = LoggerFactory.getLogger(UserDaoImpl.class);  
  27.   
  28.     @Autowired  
  29.     private MongoTemplate mongoTemplate;  
  30.   
  31.     @Override  
  32.     public void _test() {  
  33.         Set<String> colls = this.mongoTemplate.getCollectionNames();  
  34.         for (String coll : colls) {  
  35.             logger.info("CollectionName=" + coll);  
  36.         }  
  37.         DB db = this.mongoTemplate.getDb();  
  38.         logger.info("db=" + db.toString());  
  39.     }  
  40.   
  41.     @Override  
  42.     public void createCollection() {  
  43.         if (!this.mongoTemplate.collectionExists(UserEntity.class)) {  
  44.             this.mongoTemplate.createCollection(UserEntity.class);  
  45.         }  
  46.     }  
  47.   
  48.     @Override  
  49.     public List<UserEntity> findList(int skip, int limit) {  
  50.         Query query = new Query();  
  51.         query.with(new Sort(new Order(Direction.ASC, "_id")));  
  52.         query.skip(skip).limit(limit);  
  53.         return this.mongoTemplate.find(query, UserEntity.class);  
  54.     }  
  55.   
  56.     @Override  
  57.     public List<UserEntity> findListByAge(int age) {  
  58.         Query query = new Query();  
  59.         query.addCriteria(new Criteria("age").is(age));  
  60.         return this.mongoTemplate.find(query, UserEntity.class);  
  61.     }  
  62.   
  63.     @Override  
  64.     public UserEntity findOne(String id) {  
  65.         Query query = new Query();  
  66.         query.addCriteria(new Criteria("_id").is(id));  
  67.         return this.mongoTemplate.findOne(query, UserEntity.class);  
  68.     }  
  69.   
  70.     @Override  
  71.     public UserEntity findOneByUsername(String username) {  
  72.         Query query = new Query();  
  73.         query.addCriteria(new Criteria("name.username").is(username));  
  74.         return this.mongoTemplate.findOne(query, UserEntity.class);  
  75.     }  
  76.   
  77.     @Override  
  78.     public void insert(UserEntity entity) {  
  79.         this.mongoTemplate.insert(entity);  
  80.   
  81.     }  
  82.   
  83.     @Override  
  84.     public void update(UserEntity entity) {  
  85.         Query query = new Query();  
  86.         query.addCriteria(new Criteria("_id").is(entity.getId()));  
  87.         Update update = new Update();  
  88.         update.set("age", entity.getAge());  
  89.         update.set("password", entity.getPassword());  
  90.         update.set("regionName", entity.getRegionName());  
  91.         update.set("special", entity.getSpecial());  
  92.         update.set("works", entity.getWorks());  
  93.         update.set("name", entity.getName());  
  94.         this.mongoTemplate.updateFirst(query, update, UserEntity.class);  
  95.   
  96.     }  
  97.   
  98. }  

 

 

4.3.5 测试代码

 

Java代码   收藏代码
  1. package liming.mongodb.example;  
  2.   
  3. import java.util.Arrays;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6.   
  7. import liming.mongodb.example.data.UserDao;  
  8. import liming.mongodb.example.data.impl.UserDaoImpl;  
  9. import liming.mongodb.example.data.model.UserEntity;  
  10.   
  11. import org.springframework.context.ConfigurableApplicationContext;  
  12. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  13.   
  14. public class ApplicationSpring {  
  15.   
  16.     public static void main(String[] args) {  
  17.   
  18.         System.out.println("Bootstrapping HelloMongo");  
  19.   
  20.         ConfigurableApplicationContext context = null;  
  21.         context = new ClassPathXmlApplicationContext("applicationContext.xml");  
  22.   
  23.         UserDao userDao = context.getBean(UserDaoImpl.class);  
  24.             userDao._test();  
  25.         UserEntity entity1 = new UserEntity();  
  26.         entity1.setId("5");  
  27.         entity1.setAge(1);  
  28.         entity1.setBirth(new Date());  
  29.         entity1.setPassword("asdfasdf");  
  30.         entity1.setRegionName("北京");  
  31.         entity1.setWorks(1);  
  32.         userDao.insert(entity1);  
  33.         userDao.update(entity1);  
  34.         userDao.createCollection();  
  35.       
  36.         List<UserEntity> list = userDao.findList(010);  
  37.         for (UserEntity e : list) {  
  38.             System.out.println("all - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special=" + Arrays.toString(e.getSpecial())  
  39.                     + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());  
  40.         }  
  41.   
  42.         list = userDao.findListByAge(1);  
  43.         for (UserEntity e : list) {  
  44.             System.out.println("age=1 - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special="  
  45.                     + Arrays.toString(e.getSpecial()) + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());  
  46.         }  
  47.   
  48.         UserEntity e = userDao.findOne("1");  
  49.         System.out.println("id=1 - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special=" + Arrays.toString(e.getSpecial())  
  50.                 + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());  
  51.   
  52.         e = userDao.findOneByUsername("limingnihao");  
  53.         System.out.println("username=limingnihao - id=" + e.getId() + ", age=" + e.getAge() + ", password=" + e.getPassword() + ", regionName=" + e.getRegionName() + ", special="  
  54.                 + Arrays.toString(e.getSpecial()) + ", name=" + e.getName().getUsername() + "-" + e.getName().getNickname() + ", birth=" + e.getBirth());  
  55.   
  56.           
  57.         System.out.println("DONE!");  
  58.     }  
  59.   
  60. }  

 

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
5月前
|
NoSQL Java API
Spring Data MongoDB 使用
Spring Data MongoDB 使用
274 1
|
5月前
|
NoSQL Java MongoDB
Spring Boot与MongoDB的集成应用
Spring Boot与MongoDB的集成应用
|
5月前
|
存储 NoSQL Java
使用Spring Boot和MongoDB构建NoSQL应用
使用Spring Boot和MongoDB构建NoSQL应用
|
5月前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
6月前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库
|
7月前
|
NoSQL Java MongoDB
Spring 5整合MongoDB
【5月更文挑战第9天】
|
6月前
|
NoSQL Java MongoDB
Java一分钟之-Spring Data MongoDB:MongoDB集成
【6月更文挑战第11天】Spring Data MongoDB简化Java应用与MongoDB集成,提供模板和Repository模型。本文介绍其基本用法、常见问题及解决策略。包括时间字段的UTC转换、异常处理和索引创建。通过添加相关依赖、配置MongoDB连接、定义Repository接口及使用示例,帮助开发者高效集成MongoDB到Spring Boot应用。注意避免时间差、异常处理不充分和忽视索引的问题。
172 0
|
XML NoSQL Java
spring mongodb 整合
org.springframework.data 1.8.1    spring 4.0.4   mongo-java-driver3.0.0 配置 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi
1948 0
|
Java Spring Maven
mongodb--与spring整合
一、spring-data-mongodb   Spring Data是Spring专门用来数据处理的一个子项目,Spring Data除了spring-data-mongodb之外还包括spring-data-jp、spring-data-redis等项目。
919 0
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
233 2