MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON。官网下载地址:https://www.mongodb.com/download-center/enterprise

一、以Centos为例,安装mongoDB

1)下载安装包mongodb-linux-x86_64-rhel70-4.2.1.tgz,上传opt目录

2)解压安装包  tar -zxvf   mongodb-linux-x86_64-rhel70-4.2.1.tgz

3)mv mongodb-linux-x86_64-rhel70-4.2.1/ /usr/local/mongodb

4)在bin目录,新增mongodb.conf配置文件

dbpath = /data/db #数据文件存放目录,提前新建目录
logpath = /data/logs/mongodb.log #日志文件存放目录,提前新建目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
bind_ip=0.0.0.0 #允许所有的连接
auth=true #是否安全检验

  5)运行服务

./mongod  --config mongodb.conf

二、创建数据库与用户

1)修改配置参数,重启服务

auth=false #是否安全检验

2)登录服务,跳过权限验证,创建应用数据库与用户,新增成功以后,改回安全校验模式。

   2.1)切换数据库  use cmp;  创建用户 2.2)db.createUser({user:"cmp",pwd:"123456",roles:[{role:"dbAdmin",db:"cmp"},{role:"readWrite",db:"cmp"}]});

3)使用NoSQLBooster客户端登录

三、Spring整合MongoDB

1)引入MongoDB的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>springmongodb</artifactId>
<version>1.0-SNAPSHOT</version> <name>springmongodb</name>
<url>http://www.example.com</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  2)Spring配置文件

mongodb.properties

mongodb.hostport=服务IP端口
mongodb.db=
mongodb.username=
mongodb.password=

         spring-mongodb.xml

<?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:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> <context:property-placeholder location="classpath:mongodb.properties" />
<context:component-scan base-package="com.itep"></context:component-scan>
<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
<mongo:mongo id="mongo" replica-set="${mongodb.hostport}">
<!-- 一些连接属性的设置 -->
<mongo:options connections-per-host="8"
threads-allowed-to-block-for-connection-multiplier="4"
connect-timeout="20000"
max-wait-time="20000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="20000"
slave-ok="true"
write-number="1"
write-timeout="0"
write-fsync="true"
/>
</mongo:mongo>
<mongo:repositories base-package="com.itep.dao"></mongo:repositories>
<mongo:db-factory dbname="${mongodb.db}" mongo-ref="mongo"/> <!-- 配置用户名密码 -->
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongodb.username}" />
<constructor-arg name="password" value="${mongodb.password}" />
</bean> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg ref="userCredentials" />
<constructor-arg name="databaseName" value="${mongodb.db}" />
</bean> </beans>

  3)编码

3.1实体类

package com.demo.bean;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document; /**
* 功能说明:
*
*/
@Document(collection = "user")
public class User { @Indexed(unique = false)
@Id
private String uuid; private String name; private String age; public String getUuid() {
return uuid;
} public void setUuid(String uuid) {
this.uuid = uuid;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} @Override
public String toString() {
return "User{" +
"uuid='" + uuid + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}

    3.2 数据层

package com.demo.service;

import com.itep.bean.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import java.util.List; /**
* 功能说明:
*
*/
@Service("mongoDBService")
public class MongoDBServiceImpl implements IMongoDBService{ @Autowired
private MongoTemplate mongoTemplate; @Override
public <T> T findById(Class<T> entityClass , String id) {
return this.mongoTemplate.findById ( id,entityClass );
} @Override
public <T> List<T> findAll(Class<T> entityClass) {
return this.mongoTemplate.findAll ( entityClass );
} @Override
public void remove(Object obj) {
this.mongoTemplate.remove ( obj );
} @Override
public void add(Object obj) {
this.mongoTemplate.insert ( obj );
} @Override
public void saveOrUpdate(Object obj) {
this.mongoTemplate.save ( obj );
} @Override
public <T> Long count(Class<T> entityClass , Query query) {
return this.mongoTemplate.count ( query,entityClass );
} @Override
public <T> List<T> findByQuery(Class<T> entityClass , Query query , Page page) {
Long count = this.count ( entityClass,query );
if(page != null){
page.setRecordCount ( count.intValue () );
int pageNumber = page.getCurrentPage ();
int pageSize = page.getPageSize ();
query.skip ( (pageNumber-1) * pageSize).limit ( pageSize );
}
return this.mongoTemplate.find ( query,entityClass );
}
}
package com.demo.service;

import com.itep.bean.Page;
import org.springframework.data.mongodb.core.query.Query; import java.util.List; /**
* 功能说明:
*
*/
public interface IMongoDBService { <T> T findById(Class<T> entityClass,String id); <T> List<T> findAll(Class<T> entityClass); void remove(Object obj); void add(Object obj); void saveOrUpdate(Object obj); <T> Long count(Class<T> entityClass, Query query); <T> List<T> findByQuery(Class<T> entityClass, Query query, Page page); }

3.3 单元测试

package com.demo;

import com.itep.bean.User;
import com.itep.service.IMongoDBService;
import com.itep.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List;
import java.util.UUID; @RunWith (SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations ="classpath:spring-mongodb.xml")
public class AppTest
{ @Autowired
private IMongoDBService mongoDBService; @Test
public void query(){ Query query = new Query ( );
query.addCriteria ( Criteria.where ( "age" ).is ( "21" ) );
query.with ( new Sort ( new Sort.Order ( Sort.Direction.ASC ,"name") ) );
List<User> byQuery = mongoDBService.findByQuery ( User.class , query , null );
System.out.println ("..." + byQuery);
mongoDBService.findByQuery ( User.class , query , null );
} @Test
public void insert(){
User user = new User();
String uuid = UUID.randomUUID ().toString ().replace ( "-","" );
System.out.println ("uuid:" + uuid);
user.setName ( "mongodb" );
user.setUuid ( uuid );
user.setAge ( "21" );
mongoDBService.add ( user );
System.out.println ("执行成功");
} }

  

MongoDB安装与Spring整合的更多相关文章

  1. Redis的安装以及spring整合Redis时出现Could not get a resource from the pool

    Redis的下载与安装 在Linux上使用wget http://download.redis.io/releases/redis-5.0.0.tar.gz下载源码到指定位置 解压:tar -xvf ...

  2. MongoDB系列:四、spring整合mongodb,带用户验证

    在前面的两篇博客 MongoDB常用操作练习.springboot整合mongoDB的简单demo中,我们基本上熟悉了mongodb,也把它与spring boot进行了整合并且简单使用.在本篇博客中 ...

  3. 像我这样优雅地进行Spring整合MongoDB

    本文重点是要将mongodb与spring整合到项目中去,在实践中发现问题,追踪问题,然后解决问题. 一.准备 Maven.Spring(spring-data-mongodb) spring Dat ...

  4. spring整合mongodb

    使用spring整合mongodb maven 依赖 <dependency> <groupId>org.mongodb</groupId> <artifac ...

  5. MongoDB 学习(三)MongoDB 和 Spring 整合(Maven)

    一.MongoDB 和 Spring 整合(Maven) 1.相关 jar 包准备 2.用 Maven 创建项目,pom.xml 文件 <project xmlns="http://m ...

  6. Spring整合MongoDB(转)

    1.认识Spring Data MongoDB 之前还的确不知道Spring连集成Nosql的东西都实现了,还以为自己又要手动封装一个操作MongoDB的API呢,结果就发现了Spring Data ...

  7. Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例

    效果图 一共3个页面:注册页,欢迎页,用户列表页 很简单的例子,主要是为了把流程走通,没有各种验证. 注册页: 欢迎页: 用户列表页: 源码地址 https://github.com/lemonbar ...

  8. MongoDB和Java(1):Linux下的MongoDB安装

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  9. Spring整合Ehcache管理缓存

    前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存. Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现.它 ...

随机推荐

  1. Kibana笔记

    • 根据id查询 GET index_1/doc/1 • 全文检索 GET index_1/doc/_search GET index_1/doc/_search{ "query" ...

  2. Chrom谷歌浏览器没网之最全解决办法之一

    一开始查找百度很多方法都不行,,第一次尝试.最有希望和看着像的是:1.win+r --> 输入regedit 打开注册表2.打开目录HKEY_CURRENT_USER\Software\Micr ...

  3. sql语句查询结果合并union all用法_数据库技巧

    --合并重复行 select * from A union select * from B --不合并重复行 select * from A union all select * from B 按某个 ...

  4. Mysql多表关系

    mysql多表关系 多表关系是关系型数据库特有的 三种关系 一对一关系 一对多关系 多对多关系 总结 一对一 例子:用户和用户信息 外键设置在用户上,外键字段唯一非空 添加 无级联:先增加被关联表记录 ...

  5. js抽奖概率随机取出数据(简单示例)

    在平常活动开发当中,经常会碰到抽奖等类似的js功能,那么下面我们随机取数组中的一条来展示出来. ( 一 ) 无概率问题 var gift_ = ['apple pro一台','iphoneX一台',' ...

  6. 【洛谷】P2256

    (^_^) 题目: 题目 思路: 这是一道并查集水题,适合初学者做!!! 若不会并查集的点我,那是dalao的博客! 本题难点:名字是字符串,要字符串处理 给每个名字一个编号,如\(1,2,3,4,5 ...

  7. 自定义cell的步骤

    ---恢复内容开始--- 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle ...

  8. 【网络流相关】最大流的Dinic算法实现

    Luogu P3376 于\(EK\)算法求最大流时每一次只求一条增广路,时间复杂度会比较高.尽管实际应用中表现比较优秀,但是有一些题目还是无法通过. 那么我们就会使用\(Dinic\)算法实现多路增 ...

  9. TypeScript躬行记(1)——数据类型

    TypeScript不仅支持JavaScript所包含的数据类型,还额外扩展了许多实用的数据类型,例如枚举.空值.任意值等. 一.JavaScript的数据类型 JavaScript的数据类型包括6种 ...

  10. [TimLinux] JavaScript 阻止父节点接收子节点事件的方法

    1. 事件 两种类型的事件:触发式.冒泡式 2. 冒泡式 触发式:事件从DOM结构的顶层往下走的事件触发过程: 冒泡式:事件从DOM结构的底层往上走的事件触发过程. 3. 父子节点 当父.子节点同时对 ...