mongodb 整合spring

2024-09-05 23:58
文章标签 java spring 整合 mongodb

本文主要是介绍mongodb 整合spring,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 第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 整合spring的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140426

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu