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

相关文章

Spring Security常见问题及解决方案

《SpringSecurity常见问题及解决方案》SpringSecurity是Spring生态的安全框架,提供认证、授权及攻击防护,支持JWT、OAuth2集成,适用于保护Spring应用,需配置... 目录Spring Security 简介Spring Security 核心概念1. ​Securit

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避