前言
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
安装教程:菜鸟教程
直接看教程,下载安装,网速的我这里有百度网盘,需要的自取 : 链接:https://pan.baidu.com/s/15ggY5ZKYFDvb2a3o9e81bQ
提取码:f6k9
基本概念
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
基本操作
命令 | 描述 | 操作类型 |
---|---|---|
db | 查看当前数据库 | 数据库 |
show dbs | 查看所有数据库 | 数据库 |
use runoob(数据库名字) | use 有则切换数据库,没有就创建当前名称的数据库 | 数据库 |
db.runoob.insert({“name”:“你好啊”}) | 插入数据到 runoob 数据库中,如果新建数据库 show dbs无法查看。 | 数据库 |
db.dropDatabase() | 删除当前数据库,删除成功后 执行 show dbs 确认是否删除 | 数据库 |
db.createCollection() | 创建集合 db.createCollection(“hello”) | 集合(表) |
show collections | 查看集合 | 集合(表) |
db.hello.drop() | db(表示当前数据库) .hello 创建的集合 drop 删除 | 集合(表) |
db.hello.insert() | db.col.insert({“title”:“小明”,“age”:10}) | 文档(行数据) |
db.hello.find() | 查询当前集合的文档信息 | 文档(行数据) |
整合
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
使用 MongoTemplate 来实现 crud
yml配置
server:
port: 8080
spring:
data:
mongodb:
host: "127.0.0.1"
database: test
port: 27017
27017 默认端口 test 是数据库 如果是默认的就无需修改,看自己情况来决定。
bean
实体类中定义文档的名字:
/**
* @Author qrn
* @Title
* @Date 2021/5/26 17:30
* @time 17:30
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "user")
public class User {
@Id
private Integer id;
private String title;
private String name;
private Integer age;
}
@Document(collection = “user”) : 意思就是 在当前数据库中,创建文档,(表),如果没有,在添加数据的时候
会创建文档,然后再插入数据到文档中。
ServerImpl
/**
* @Author qrn
* @Title
* @Date 2021/5/26 18:04
* @time 18:04
*/
@Service
public class UserServerImpl implements IUserServer {
@Autowired
MongoTemplate mongoTemplate;
/**
* 添加文档
* @param user
*/
@Override
public void saveUser(User user) {
mongoTemplate.save(user);
}
/**
* 根据id 获取当前文档信息
* @param id
* @return
*/
@Override
public User getUser(Integer id) {
return mongoTemplate.findById(id,User.class);
}
/**
* 删除文档信息,这里的删除是先查询当前文档信息,然后在删除
* @param id
*/
@Override
public void removeUser(Integer id) {
mongoTemplate.remove(mongoTemplate.findById(id, User.class));
}
/**
* 获取所有的文档信息
* @return
*/
@Override
public List<User> listUser() {
return mongoTemplate.findAll(User.class);
}
}
Controller
/**
* @Author qrn
* @Title
* @Date 2021/5/26 20:48
* @time 20:48
*/
@RestController
@RequestMapping("/user/")
public class UserController {
@Autowired
IUserServer iUserServer;
@Autowired
UserRepository userRepository;
/**
* 添加文档数据
* @param user
* @return
*/
@RequestMapping("saveUser")
public String saveUser(User user){
iUserServer.saveUser(user);
return "添加成功";
}
/**
* 获取当前文档内容
* @param id
* @return
*/
@RequestMapping("getUser")
public User getUser(Integer id){
return iUserServer.getUser(id);
}
/**
* 当前文档 user 所有内容
* @return
*/
@RequestMapping("listUser")
public List<User> listUser(){
return iUserServer.listUser();
}
/**
* 删除文档
* @param id
* @return
*/
@RequestMapping("removeUser")
public String removeUser(Integer id){
iUserServer.removeUser(id);
return "删除成功";
}
JPA操作
默认就支持 jpa的操作,无需加入依赖。
Repository
/**
* @Author qrn
* @Title
* @Date 2021/5/27 11:58
* @time 11:58
* 使用 jpa 去操作 MongoDB
*/
public interface UserRepository extends CrudRepository<User, Integer> {
}
定义好接口,然后直接从jpa的方法去操作 MongoDB数据库
Controller
// 使用 jpa 来操作 MongoDB 数据库:
/**
* 添加文档数据
* @param user
* @return
*/
@RequestMapping("saveJpaUser")
public String saveJpaUser(User user){
userRepository.save(user);
return "添加成功";
}
/**
* 获取当前文档内容
* @param id
* @return
*/
@RequestMapping("getJpaUser")
public User getJpaUser(Integer id){
return userRepository.findById(id).get();
}
/**
* 当前文档 user 所有内容
* @return
*/
@RequestMapping("listJpaUser")
public Iterable<User> listJpaUser(){
return userRepository.findAll();
}
/**
* 删除文档
* @param id
* @return
*/
@RequestMapping("removeJpaUser")
public String removeJpaUser(Integer id){
userRepository.deleteById(id);
return "删除成功";
}
结束
直接调用 jpa来操作数据库,很方便,不需要在去拿原生的方法来操作。
实例代码在github上面需要的请自行拉取:spring-boot-integrate 然后后续会集成更多的模块进去,需要请点个star。后续会集成更多的接口实现,有需要的请保存。
如果这篇文章,有帮助到大家的,请给作者一个一键三连,谢谢