Spring Boot框架開發(fā)Web項目之十 整合MongoDB

本系列文章主要索引詳情 點擊查看


現(xiàn)在我們已經可以通過從后臺傳遞數(shù)據到前端頁面,而且也可以對應頁面的輸入域進行簡單的校驗并將數(shù)據提交都后臺,現(xiàn)在我們來實現(xiàn)將提交到后臺的數(shù)據晚伙,保存到數(shù)據庫中,而我們將使用MongoDB數(shù)據庫對數(shù)據進行保存俭茧。

工具

IntelliJ IDEA 16
JDK 1.8
Maven 3.5
Tomcat 1.8
MongoDB 3.4.5

安裝MongoDB

暫略咆疗,后期補充


項目源碼下載地址:
https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo


引入相關依賴

1、安裝完了MongoDB母债,下面便開始將MongoDB整合到我們的項目中來午磁,首先我們需要導入必須的依賴,在pom.xml文件中導入我們的Maven依賴

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-mongodb</artifactId>
       <version>1.5.2.RELEASE</version>
   </dependency>

然后在application.properties文件中添加

spring.data.mongodb.uri=mongodb://127.0.0.1:27017/spring

標準的URL連接語法:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb:// 這是固定的格式毡们,必須要指定迅皇。
username:password@ 可選項,如果設置衙熔,在連接數(shù)據庫服務器之后登颓,驅動都會嘗試登陸這個數(shù)據庫
host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連接服務器的地址红氯。如果要連接復制集挺据,請指定多個主機地址。
portX 可選的指定端口脖隶,如果不填,默認為27017
/database 如果指定username:password@暇检,連接并驗證登陸指定數(shù)據庫产阱。若不指定,默認打開 test 數(shù)據庫块仆。
?options 是連接選項构蹬。如果不使用/database,則前面需要加上/悔据。所有連接選項都是鍵值對name=value庄敛,鍵值對之間通過&或;(分號)隔開
標準的連接格式包含了多個選項(options),如下所示:

2科汗、打開我們的實體類ProfileForm.java,添加一個字段 id(注意類型必須為String ,如果使用Integer藻烤,則會報錯,因為在MongoDB中id字段是自動生成的一段字符串,而不是一個數(shù)字)

package com.example.dto;


import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;

@Document(collection = "profile")
public class ProfileForm {
    @Id
    private String id;

    @Size(min = 2)
    private String twitterHandle;

    @Email
    @NotNull
    private String email;

    @NotNull
    private LocalDate birthDate;

    public ProfileForm() {
    }

    public ProfileForm(String id, String twitterHandle, String email, LocalDate birthDate) {
        this.id = id;
        this.twitterHandle = twitterHandle;
        this.email = email;
        this.birthDate = birthDate;
    }


    public String getId() {
        return id;
    }

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

    public String getTwitterHandle() {
        return twitterHandle;
    }

    public void setTwitterHandle(String twitterHandle) {
        this.twitterHandle = twitterHandle;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public LocalDate getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(LocalDate birthDate) {
        this.birthDate = birthDate;
    }

    @Override
    public String toString() {
        return "ProfileForm{" +
                "id=" + id +
                ", twitterHandle='" + twitterHandle + '\'' +
                ", email='" + email + '\'' +
                ", birthDate=" + birthDate +
                '}';
    }
}

@Id注釋 : id屬性是給mongodb用的怖亭,用@Id注解修飾
@Document(collection = "profile") 聲明數(shù)據庫中對應的文檔(表)

3涎显、 接下來編寫一個操作mongodb的repository代碼,它繼承MongoRepository接口兴猩;MongoRepository接口包含了常用的CRUD操作期吓,例如:save,insert,fillAll等。我們也可以定義我們自己的操作接口

package com.example.Repository;
import com.example.dto.ProfileForm;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface  ProfileRepository extends MongoRepository<ProfileForm,String> {
    ProfileForm findByTwitterHandle(String twitterHandle);
}

如果使用自定義接口倾芝,如findByTwitterHandle()方法讨勤,這個并不是MongoRepository提供的方法,twitterHandle 為 ProfileForm 屬性晨另,由此可以看出潭千,如果我們想要通過某個字段來查詢數(shù)據,則方法名稱的格式應該為 findBy+字段名(首字母大寫)拯刁。

4脊岳、接下來是訪問控制類,在提交事件中添加保存的操作

 @Autowired
 private ProfileRepository profileRepository;

@RequestMapping(value = "/profile" ,method = RequestMethod.POST)
    public String saveProfile(@Valid ProfileForm profileForm, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            return "profile/profilePage";
        }
       profileRepository.save(profileForm);
        System.out.println("Save Ok"+profileForm);
        return "redirect:profile";
    }

5垛玻、下面開發(fā)訪問我們的項目:http://127.0.0.1:8080/profile割捅,并輸入正確格式的數(shù)據(因為前面小結中,我們?yōu)檩斎胗蛱砑恿诵r灒┲阕缓簏c擊提交

6亿驾、提交數(shù)據以后,查詢MongoDB數(shù)據庫账嚎,如果結果如下莫瞬,則保存數(shù)據成功


源碼下載地址:
https://github.com/JFAlex/SpringMVC4/tree/master/SpringMVC_NO.10/demo


上一篇Spring Boot 框架開發(fā)Web項目之九 Spring Boot項目的打包和部署

下一篇未完待續(xù)...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市郭蕉,隨后出現(xiàn)的幾起案子疼邀,更是在濱河造成了極大的恐慌,老刑警劉巖召锈,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旁振,死亡現(xiàn)場離奇詭異,居然都是意外死亡涨岁,警方通過查閱死者的電腦和手機拐袜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梢薪,“玉大人蹬铺,你說我怎么就攤上這事”玻” “怎么了甜攀?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵秋泄,是天一觀的道長。 經常有香客問我赴邻,道長印衔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任姥敛,我火速辦了婚禮奸焙,結果婚禮上,老公的妹妹穿的比我還像新娘彤敛。我一直安慰自己与帆,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布墨榄。 她就那樣靜靜地躺著玄糟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袄秩。 梳的紋絲不亂的頭發(fā)上阵翎,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音之剧,去河邊找鬼郭卫。 笑死,一個胖子當著我的面吹牛背稼,可吹牛的內容都是我干的贰军。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蟹肘,長吁一口氣:“原來是場噩夢啊……” “哼词疼!你這毒婦竟也來了?” 一聲冷哼從身側響起帘腹,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤贰盗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后阳欲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體童太,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年胸完,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翘贮。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赊窥,死狀恐怖,靈堂內的尸體忽然破棺而出狸页,到底是詐尸還是另有隱情锨能,我是刑警寧澤扯再,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站址遇,受9級特大地震影響熄阻,放射性物質發(fā)生泄漏。R本人自食惡果不足惜倔约,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一秃殉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浸剩,春花似錦钾军、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至重罪,卻和暖如春樱哼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剿配。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工搅幅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惨篱。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓盏筐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親砸讳。 傳聞我的和親對象是個殘疾皇子琢融,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容