SpringBoot操作MongoDB實現增刪改查

本篇博客主講如何使用SpringBoot操作MongoDB。

SpringBoot操作MongoDB實現增刪改查

(1)pom.xml引入依賴

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
1
2
3
4
(2)創建application.yml

spring:
data:
mongodb:
host: 192.168.72.129
database: studentdb
1
2
3
4
5
(3)創建實體類
創建包com.changan.mongodb,包下建包pojo 用于存放實體類,創建實體類

package com.changan.mongdb.pojo;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;

@Document(collection = "student")
public class Student implements Serializable {

@Id
private Long id;

private String name;

private String sex;

private String age;

private String introduce;

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public String getIntroduce() {
return introduce;
}

public void setIntroduce(String introduce) {
this.introduce = introduce;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
(4)創建數據訪問接口
com.changan.mongodb包下創建dao包,包下創建接口

package com.changan.mongdb.dao;

import com.changan.mongdb.pojo.Student;

import java.util.List;
import java.util.Map;

public interface StudentDao {


void save(Student student);

void update(Student student);

List<Student> findAll();

void delete(Integer id);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(5)創建業務邏輯類
com.changan.mongodb包下創建impl包,包下創建類

package com.changan.mongdb.dao.impl;

import com.changan.mongdb.dao.StudentDao;
import com.changan.mongdb.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.LookupOperation;
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.Component;

import java.util.List;

@Component
public class StudentDaoImpl implements StudentDao {

@Autowired
private MongoTemplate mongoTemplate;

/**
* 新增信息
* @param student
*/
@Override
public void save(Student student) {
mongoTemplate.save(student);
}

/**
* 修改信息
* @param student
*/
@Override
public void update(Student student) {
//修改的條件
Query query = new Query(Criteria.where("id").is(student.getId()));

//修改的內容
Update update = new Update();
update.set("name",student.getName());

mongoTemplate.updateFirst(query,update,Student.class);
}

/**
* 查詢所有信息
* @return
*/
@Override
public List<Student> findAll() {
return mongoTemplate.findAll(Student.class);
}

/**
* 根據id查詢所有信息
* @param id
*/
@Override
public void delete(Integer id) {
Student byId = mongoTemplate.findById(1,Student.class);
mongoTemplate.remove(byId);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(6)創建測試類

package com.changan.mongdb;

import com.changan.mongdb.dao.StudentDao;
import com.changan.mongdb.pojo.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;
import java.util.Map;

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

@Autowired
private StudentDao studentDao;

/**
* 查詢所有信息
*/
@Test
public void findAll() {
List<Student> all = studentDao.findAll();
System.out.println(all.size());
}

/**
* 新增信息
*/
@Test
public void save() {
Student student = new Student();
student.setId(6l);
student.setName("宋人頭");
studentDao.save(student);
}

/**
* 修改信息
*/
@Test
public void update() {
Student student = new Student();
student.setId(2l);
student.setName("吳很帥");
studentDao.update(student);
}

/**
* 刪除信息
*/
@Test
public void delete(http://www.my516.com) {
studentDao.delete(3);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

---------------------

轉載于:https://www.cnblogs.com/hyhy904/p/11082199.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java面向對象的特征三:多態性 —(15)

1.多態性的理解&#xff1a;可以理解為一個事物的多種形態。 2.何為多態性&#xff1a; 對象的多態性&#xff1a;父類的引用指向子類的對象&#xff08;或子類的對象賦給父類的引用&#xff09; 舉例&#xff1a; Person p new Man(); Object obj new Date(); 3.多態性的…

vue 中$index $key 已移除

之前可以這樣: 123456<ulid"example"><liv-for"item in items">{{$index}}{{$key}}</li></ul>現在已經移除,如果還用的話就會報錯:Uncaught ReferenceError: $index is not defined; 現在這樣寫: 123456<ul id"example&qu…

vue-resource全攻略

Vue.js——vue-resource全攻略 概述 上一篇我們介紹了如何將$.ajax和Vue.js結合在一起使用&#xff0c;并實現了一個簡單的跨域CURD示例。Vue.js是數據驅動的&#xff0c;這使得我們并不需要直接操作DOM&#xff0c;如果我們不需要使用jQuery的DOM選擇器&#xff0c;就沒有必要…

java面向對象:關鍵字 —(16)

static:靜態的 1.可以用來修飾的結構&#xff1a;主要用來修飾類的內部結構 屬性、方法、代碼塊、內部類 2.static修飾屬性&#xff1a;靜態變量&#xff08;或類變量&#xff09; 2.1 屬性&#xff0c;是否使用static修飾&#xff0c;又分為&#xff1a;靜態屬性 vs 非靜態…

《少年先瘋隊》第九次團隊作業:Beta沖刺與團隊項目驗收

博文簡要信息表&#xff1a; 項目內容軟件工程https://www.cnblogs.com/nwnu-daizh/本次實驗鏈接地址https://www.cnblogs.com/nwnu-daizh/p/11056511.html團隊名稱少年先瘋隊作業學習目標&#xff08;1&#xff09;掌握軟件黑盒測試技術&#xff1b;&#xff08;2&#xff09;…

vue-resource jsonp跨域問題解決方法

最近在學習vue.js 碰到個ajax跨域請求的問題&#xff0c;之前知道可以用jsonp解決&#xff0c;但是一直沒實踐過&#xff0c;這次用發現里面好多問題&#xff0c;所以現在記錄下來&#xff0c;希望可以給剛接觸使用jsonp的同學一點幫助&#xff01; 關于什么是jsonp&#xff0c…

虛擬機無法連接至網絡

問題&#xff1a; 虛擬機中的win XP系統無法連接至外部win10系統網絡 嘗試解決方法&#xff1a; 1&#xff09;換用橋接模式和NAT模式&#xff0c;無效 2&#xff09;恢復虛擬機網絡屬性至默認狀態&#xff0c;無效 最終解決方法&#xff1a; 換用外部無線網絡&#xff0c;即能…

java面向對象:關鍵字 —(17)

interface:接口 1.使用說明&#xff1a; 1.接口使用interface來定義 2.Java中&#xff0c;接口和類是并列的兩個結構3.如何定義接口&#xff1a;定義接口中的成員 3.1 JDK7及以前&#xff1a;只能定義全局常量和抽象方法>全局常量&#xff1a;public static final的.但是…

原生js來實現對dom元素class的操作方法

jQuery操作class的方式非常強大 寫了一個利用原生js來實現對dom元素class的操作方法 1.addClass:為指定的dom元素添加樣式 2.removeClass:刪除指定dom元素的樣式 3.toggleClass:如果存在(不存在)&#xff0c;就刪除(添加)一個樣式 4.hasClass:判斷樣式是否存在 下面為一toggleC…

python+selenium配置Edge瀏覽器

Chrome, Firefox只需要修改conftest.py文件中的 pytest.fixture(scopesession)def browser(): return BzwUtil.read_yml(config.yml,WEB_INFO,BROWSER) add option in pytest command line def pytest_addoption(parser): parser.addoption("--browser", actio…

JSON.parse和JSON.stringify方法

JSON.parse() JSON.parse()方法將json字符串轉化為Javascript值或對象。 語法 JSON.parse(text[,reviver]) 參數 text:要被解析成Javascript值的字符串 reviver:若是一個函數則規定了原始值(text)如何被解析改造&#xff0c;在被返回前。 示例 JSON.parse({}); //…

java面向對象:異常處理 —(18)

1. 異常的體系結構 java.lang.Throwable |-----java.lang.Error:一般不編寫針對性的代碼進行處理。|-----java.lang.Exception:可以進行異常的處理|------編譯時異常(checked)|-----IOException|-----FileNotFoundException|-----ClassNotFoundException|------運行時異常(un…

vue請求簡單配置

簡單記錄一下vue的http請求配置相關 測試環境請求接口設置:   1. config/dev.env.js添加&#xff1a;     module.exports merge(prodEnv, {       NODE_ENV: "development",       API_ROOT: "http://", //配置http請求頭     })…

【vue報錯】——listen EADDRINUSE :::8080 解決方案

問題原因&#xff1a; 此項錯誤表示 8080 端口被占用 解決方案一&#xff1a; 打開cmd 輸入&#xff1a;netstat -ano 查看所有端口信息&#xff0c;如圖&#xff0c;找到端口 8081&#xff0c;以及對應的 PID 輸入&#xff1a;tskill PID 即可殺死進程 解決方案二&#xff1a…

記錄_20190626

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result異常的解決方法 原來JAVA中如果用BigDecimal做除法的時候一定要在divide方法中傳遞第二個參數&#xff0c;定義精確到小數點后幾位&#xff0c;否則在不整除的情況下…

String與Array

public class Api {Testpublic void StringApi(){// equals() 判斷內容是否相同區分大小寫// equalsIgnoreCase() 判斷內容是否相同不區分大小寫// length() 獲取長度// charAt(int index) 獲取某個索引位置的字…

HTML與CSS布局技巧總結

很多人對CSS的布局有困惑&#xff0c;實際的應用場景中由于布局種類多難以選擇。今天我花些時間總結下自己對CSS布局的理解&#xff0c;分析下了解各種布局的優劣&#xff0c;同時希望能分享給初入前端的朋友們一些在布局上的經驗&#xff0c;如果有那些地方總結的不好&#xf…

當談論迭代器時,我談些什么?

花下貓語&#xff1a;之前說過&#xff0c;我對于編程語言跟其它學科的融合非常感興趣&#xff0c;但我還說漏了一點&#xff0c;就是我對于 Python 跟其它編程語言的對比學習&#xff0c;也很感興趣。所以&#xff0c;我一直希望能聚集一些有其它語言基礎的同學&#xff0c;一…

在Vue-cli項目中使用echarts

該示例使用 vue-cli 腳手架搭建 安裝echarts依賴 npm install echarts -S11 或者使用國內的淘寶鏡像&#xff1a; 安裝 npm install -g cnpm --registryhttps://registry.npm.taobao.org11 使用 cnpm install echarts -S11 創建圖表 全局引入 main.js // 引入echarts im…

Java的模板文件配置

Java的Mappers文件配置 <?xml version"1.0" encoding"UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.qfedu.…