什么是 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
---------------------------------------------------------- 分界线 ----------------------------------------------------------
首先看一下结构目录
配置 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());
}
}
}
项目地址: