什么是 MongoDB ??

     MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能,MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案,MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,MongoDB 文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组。

MongoDB 有什么特点??

    你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序

    你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性

    MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

    Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

    MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可

    MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言

MongoDB 中文文档:http://www.mongoing.com/docs/

MongoDB 下载地址:https://www.mongodb.com/download-center/community

---------------------------------------------------------- 分界线 ----------------------------------------------------------

首先看一下结构目录

Spring Boot 实战 :集成 MongoDB

配置 pom.xml

<dependency><!-- mongodb -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency><!-- tk_MyBatis -->
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>4.0.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

配置 application.properties

###自定义端口号 默认为 8080
server.port = 8080
###添加 MySQL 数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot_dome?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true
###用户名
spring.datasource.username=root
###密码
spring.datasource.password=root
###驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### MongoDB 配置
### host 配置
spring.data.mongodb.host=localhost
### 默认数据库端口 27017
spring.data.mongodb.port=27017
### 连接数据库名称
spring.data.mongodb.database=test

配置 mongoService  这个相当于代替 Service 层  简单来说配置了这个就顶替了 Service 层

package com.cs.mongodb.repository;

import com.cs.mongodb.utils.UpdateQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

/**
 * 
 * @ClassName BaseMongoService
 * @Description 
 * @author Alex
 * @Date 2019-03-29 16:17:29
 * @version 1.0.0
 * @param <T>
 */
public class BaseMongoService<T> {

	@Autowired
	private MongoTemplate mongoTemplate;
	
	/**
	 * 
	 * @Description 插入对象
	 * @param mongo mongo对象
	 * @return
	 * Create at: 2019-03-29 16:10:55
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:10:55 - first revision by Alex
	 *
	 */
	public String insert(T mongo) {
		try {
			mongoTemplate.save(mongo);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}
	
	/**
	 * 
	 * @Description 设置id
	 * @param id
	 * @return
	 * Create at: 2019-03-29 16:12:02
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:12:02 - first revision by Alex
	 *
	 */
	public Query setId(String id) {
		Query query = new Query(Criteria.where("_id").is(id));
		return query;
	}
	
	/**
	 * 
	 * @Description 获取UpdateQuery
	 * @return 
	 * Create at: 2019-03-29 16:12:33
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:12:33 - first revision by Alex
	 *
	 */
	public UpdateQuery getUpdateQuery() {
		return new UpdateQuery();
	}
	
	/**
	 * 
	 * @Description 根据id更新
	 * @param query setId的query
	 * @param up update对象
	 * @param entityClass 对象class
	 * @return
	 * Create at: 2019-03-29 16:13:09
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:13:09 - first revision by Alex
	 *
	 */
	public String updateById(Query query,UpdateQuery up,Class<T> entityClass) {
		try {
			mongoTemplate.updateFirst(query, up.getUpdate(), entityClass);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}
	
	/**
	 * 
	 * @Description 查询全部
	 * @param entityClass 对象class
	 * @return
	 * Create at: 2019-03-29 16:14:57
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:14:57 - first revision by Alex
	 *
	 */
	public List<T> findAll(Class<T> entityClass) {
		return mongoTemplate.findAll(entityClass);
	}
	
	/**
	 * 
	 * @Description 根据id查询
	 * @param id 
	 * @param entityClass 对象class
	 * @return
	 * Create at: 2019-03-29 16:16:20
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:16:20 - first revision by Alex
	 *
	 */
	public T selectById(String id,Class<T> entityClass) {
		Query query = new Query(Criteria.where("_id").is(id));
		return mongoTemplate.findOne(query, entityClass);
	}
	
	/**
	 * 
	 * @Description 根据Criteria查询
	 * @param criteria
	 * @param entityClass 对象class
	 * @return
	 * Create at: 2019-03-29 16:17:57
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:17:57 - first revision by Alex
	 *
	 */
	public List<T> select(Criteria criteria,Class<T> entityClass) {
		Query query = new Query();
		query.addCriteria(criteria);
		return mongoTemplate.find(query, entityClass);
	}
	
	/**
	 * 
	 * @Description 删除对象
	 * @param mongo mongo对象
	 * @return
	 * Create at: 2019-03-29 16:18:45
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:18:45 - first revision by Alex
	 *
	 */
	public String delete(T mongo) {
		try {
			mongoTemplate.remove(mongo);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}
	
	/**
	 * 
	 * @Description 根据id删除
	 * @param id
	 * @param entityClass 对象class
	 * @return
	 * Create at: 2019-03-29 16:20:10
	 * @author: Alex
	 * Revision:
	 *    2019-03-29 16:20:10 - first revision by Alex
	 *
	 */
	public String deleteById(String id,Class<T> entityClass) {
		try {
			T mongo = selectById(id,entityClass);
			delete(mongo);
			return "success";
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}
}

配置 mongoMapper  这个地方继承了一下 Tk_Batis ,Tk 和 Mongo 可以同时使用并不会冲突

package com.cs.mongodb.mapper;

import com.cs.mongodb.model.Mongo;
import com.cs.mongodb.repository.BaseMapper;

/**
 * @InterfaceName MongoMapper
 * @Param
 * @Author linluochen
 * @Date 2019/5/3 10:39
 * @Version 1.0
 **/
public interface MongoMapper extends BaseMapper<Mongo> {

}

调用 mongoService 

package com.cs.mongodb.service.impl;

import com.cs.mongodb.model.Mongo;
import com.cs.mongodb.repository.BaseMongoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * @InterfaceName MongoService
 * @Param
 * @Author linluochen
 * @Date 2019/5/3 10:40
 * @Version 1.0
 **/
@Service
public class MongoServiceImpl extends BaseMongoService<Mongo> {  // 实现类继承的是 MongoDBService 一定要注意

    @Autowired
    private MongoTemplate mongoTemplate;

    public Map<String,String> insertOne(Mongo Mongo) {
        Map<String,String> relMap = new HashMap<String,String>();
        try {
            mongoTemplate.insert(Mongo);
            relMap.put("relMsg","success");
        } catch (Exception e) {
            e.printStackTrace();
            relMap.put("relMsg","error");
        }
        return relMap;
    }

}

测试 mongoDB 

package com.cs.mongodb;

import com.cs.mongodb.model.Mongo;
import com.cs.mongodb.service.impl.MongoServiceImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodbApplicationTests {

    @Resource
    private MongoServiceImpl mongoService;

    @Test
    public void contextLoads() {
    }

    /**
     *  MongoDB 测试
     */
    @Test
    public void MongoDBTest(){
        Mongo mongo = new Mongo();
        mongo.setId("1");
        mongo.setName("小明");
        mongoService.insertOne(mongo);
        System.out.println("成功");
        List<Mongo> list = mongoService.findAll(Mongo.class);
        for (Mongo db:list) {
            System.out.println("id为:"+db.getId());
            System.out.println("姓名为:"+db.getName());
        }
    }

}

项目地址:

 

相关文章: