APP下载
报价宝  ›  科技  › 

SpringBoot2.0 基础案例(15):配置MongoDB数据库 实现增删改查

报价宝 来源:baojiabao.com 发布时间:2019-10-06 03:50:00 09月30日更新
报价宝综合消息SpringBoot2.0 基础案例(15):配置MongoDB数据库 实现增删改查

本文源代码

GitHub地址:知了一笑

https://github.com/cicadasmile/spring-boot-base

一、NoSQL简介

1、NoSQL 概念

NoSQL( Not Only SQL ),意即"不仅仅是SQL"。对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模资料的储存。这些型别的资料储存不需要固定的模式,无需多余操作就可以横向扩充套件。

2、优点/缺点

--优点:

高可扩充套件性

分散式计算

低成本

架构的灵活性,半结构化资料

没有复杂的关系

--缺点:

没有标准化

有限的查询功能(到目前为止)

资料展现不直观

二、MongoDB数据库

1、MongoDB简介

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支援的资料结构非常松散,是类似 json 的 bjson 格式,因此可以储存比较复杂的资料型别。MongoDB 最大的特点是他支援的查询语言非常强大,其语法有点类似于面向物件的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支援对资料建立索引。

2、MongoDB特点

1)MongoDB 是由C++语言编写的,是一个基于分散式档案储存的开源数据库系统。

2)在高负载的情况下,新增更多的节点,可以保证服务器效能。

3)MongoDB 旨在为WEB应用提供可扩充套件的高效能资料储存解决方案。

4)MongoDB 将资料储存为一个文件,资料结构由键值(key=>value)对组成。MongoDB 文件类似于 JSON 物件。字段值可以包含其他文件,阵列及文件阵列。

三、与SpringBoot2.0整合

1、MongoDB基础环境

基于命令列建立测试用的数据库,账号和密码。

# 开启命令列

MongoDB4.0in>mongo

# 展示所有数据库

> show databases

# 新建一个admin数据库,命令比较难为情

> db.admin.insert({"name":"管理员数据库"});

# 使用admin数据库

> use admin

# 建立root使用者,具有读写许可权

> db.createUser({user:"root",pwd:"root",roles:[{role:"readWrite",db:"admin"}]})

Successfully added user:

2、核心依赖

org.springframework.boot

spring-boot-starter-data-mongodb

3、配置档案

使用者名称:root

密码:root

数据库:admin

spring:

data:

mongodb:

uri: mongodb://root:[email protected]:27017/admin

4、封装应用界面

public interface ImgInfoRepository {

void saveImg(ImgInfo imgInfo) ;

ImgInfo findByImgTitle(String imgTitle);

long updateImgInfo(ImgInfo imgInfo) ;

void deleteById(Integer imgId);

}

5、核心程式码块

MongoDB的使用方式如下。

import com.boot.mongodb.entity.ImgInfo;

import com.boot.mongodb.repository.ImgInfoRepository;

import com.mongodb.client.result.UpdateResult;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.data.mongodb.core.query.Criteria;

import org.springframework.data.mongodb.core.query.Query;

import org.springframework.data.mongodb.core.query.Update;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service

public class ImgInfoRepositoryImpl implements ImgInfoRepository {

@Resource

private MongoTemplate mongoTemplate;

@Override

public void saveImg(ImgInfo imgInfo) {

mongoTemplate.save(imgInfo) ;

}

@Override

public ImgInfo findByImgTitle(String imgTitle) {

Query query=new Query(Criteria.where("imgTitle").is(imgTitle));

return mongoTemplate.findOne(query,ImgInfo.class);

}

@Override

public long updateImgInfo(ImgInfo imgInfo) {

Query query = new Query(Criteria.where("imgId").is(imgInfo.getImgId()));

Update update= new Update().set("imgTitle", imgInfo.getImgTitle()).set("imgUrl", imgInfo.getImgUrl());

UpdateResult result = mongoTemplate.updateFirst(query,update,ImgInfo.class);

return result.getMatchedCount();

}

@Override

public void deleteById(Integer imgId) {

Query query = new Query(Criteria.where("imgId").is(imgId));

mongoTemplate.remove(query,ImgInfo.class);

}

}

6、测试程式码块

import com.boot.mongodb.MongoDBApplication;

import com.boot.mongodb.entity.ImgInfo;

import com.boot.mongodb.repository.ImgInfoRepository;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

import java.util.Date;

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = MongoDBApplication.class)

public class MongoTest {

@Resource

private ImgInfoRepository imgInfoRepository ;

@Test

public void test1 (){

ImgInfo record = new ImgInfo() ;

record.setImgId(1);

record.setUploadUserId("A123");

record.setImgTitle("博文图片");

record.setSystemType(1) ;

record.setImgType(2);

record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");

record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");

record.setShowState(1);

record.setCreateDate(new Date());

record.setUpdateDate(record.getCreateDate());

record.setRemark("知了");

record.setbEnable("1");

imgInfoRepository.saveImg(record);

}

@Test

public void test2 (){

ImgInfo imgInfo = imgInfoRepository.findByImgTitle("博文图片") ;

System.out.println("imgInfo === >> " + imgInfo);

}

@Test

public void test3 (){

ImgInfo record = new ImgInfo() ;

record.setImgId(1);

record.setUploadUserId("A123");

record.setImgTitle("知了图片");

record.setSystemType(1) ;

record.setImgType(2);

record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");

record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");

record.setShowState(1);

record.setCreateDate(new Date());

record.setUpdateDate(record.getCreateDate());

record.setRemark("知了");

record.setbEnable("1");

long result = imgInfoRepository.updateImgInfo(record) ;

System.out.println("result == >> " + result);

}

@Test

public void test4 (){

imgInfoRepository.deleteById(1);

}

}

四、源代码地址

GitHub地址:知了一笑

https://github.com/cicadasmile/spring-boot-base

码云地址:知了一笑

https://gitee.com/cicadasmile/spring-boot-base

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 笔记本电脑价格 红米手机价格 耳机价格 降噪耳机价格