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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定