<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    Spring Boot中使用MongoDB數據庫

    管理 管理 編輯 刪除

    MongoDB簡介

    MongoDB是一個基于分布式文件存儲的數據庫,它是一個介于關系數據庫和非關系數據庫之間的產品,其主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統的RDBMS系統(具有豐富的功能)之間架起一座橋梁,它集兩者的優勢于一身。

    MongoDB支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型,也因為他的存儲格式也使得它所存儲的數據在Nodejs程序應用中使用非常流暢。

    既然稱為NoSQL數據庫,Mongo的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

    但是,MongoDB也不是萬能的,同MySQL等關系型數據庫相比,它們在針對不同的數據類型和事務要求上都存在自己獨特的優勢。在數據存儲的選擇中,堅持多樣化原則,選擇更好更經濟的方式,而不是自上而下的統一化。

    較常見的,我們可以直接用MongoDB來存儲鍵值對類型的數據,如:驗證碼、Session等;由于MongoDB的橫向擴展能力,也可以用來存儲數據規模會在未來變的非常巨大的數據,如:日志、評論等;由于MongoDB存儲數據的弱類型,也可以用來存儲一些多變json數據,如:與外系統交互時經常變化的JSON報文。而對于一些對數據有復雜的高事務性要求的操作,如:賬戶交易等就不適合使用MongoDB來存儲。

    MongoDB官網open in new window

    #訪問MongoDB

    在Spring Boot中,對如此受歡迎的MongoDB,同樣提供了自配置功能。

    #引入依賴

    Spring Boot中可以通過在pom.xml中加入spring-boot-starter-data-mongodb引入對mongodb的訪問支持依賴。它的實現依賴spring-data-mongodb。是的,您沒有看錯,又是spring-data的子項目,之前介紹過spring-data-jpa、spring-data-redis,對于mongodb的訪問,spring-data也提供了強大的支持,下面就開始動手試試吧。


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

    #快速開始使用Spring-data-mongodb

    若MongoDB的安裝配置采用默認端口,那么在自動配置的情況下,我們不需要做任何參數配置,就能馬上連接上本地的MongoDB。下面直接使用spring-data-mongodb來嘗試對mongodb的存取操作。(記得mongod啟動您的mongodb)

    • 創建要存儲的User實體,包含屬性:id、username、age
    public class User {
    
        @Id
        private Long id;
    
        private String username;
        private Integer age;
    
        public User(Long id, String username, Integer age) {
            this.id = id;
            this.username = username;
            this.age = age;
        }
    
        // 省略getter和setter
    
    }
    
    
    • 實現User的數據訪問對象:UserRepository
    public interface UserRepository extends MongoRepository<User, Long> {
    
        User findByUsername(String username);
    
    }
    
    • 在單元測試中調用
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringApplicationConfiguration(Application.class)
    public class ApplicationTests {
    
    	@Autowired
    	private UserRepository userRepository;
    
    	@Before
    	public void setUp() {
    		userRepository.deleteAll();
    	}
    
    	@Test
    	public void test() throws Exception {
    
    		// 創建三個User,并驗證User總數
    		userRepository.save(new User(1L, "didi", 30));
    		userRepository.save(new User(2L, "mama", 40));
    		userRepository.save(new User(3L, "kaka", 50));
    		Assert.assertEquals(3, userRepository.findAll().size());
    
    		// 刪除一個User,再驗證User總數
    		User u = userRepository.findOne(1L);
    		userRepository.delete(u);
    		Assert.assertEquals(2, userRepository.findAll().size());
    
    		// 刪除一個User,再驗證User總數
    		u = userRepository.findByUsername("mama");
    		userRepository.delete(u);
    		Assert.assertEquals(1, userRepository.findAll().size());
    
    	}
    
    }
    

    #參數配置

    通過上面的例子,我們可以輕而易舉的對MongoDB進行訪問,但是實戰中,應用服務器與MongoDB通常不會部署于同一臺設備之上,這樣就無法使用自動化的本地配置來進行使用。這個時候,我們也可以方便的配置來完成支持,只需要在application.properties中加入mongodb服務端的相關配置,具體示例如下:

    spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test
    

    在嘗試此配置時,記得在mongo中對test庫創建具備讀寫權限的用戶(用戶名為name,密碼為pass),不同版本的用戶創建語句不同,注意查看文檔做好準備工作

    若使用mongodb 2.x,也可以通過如下參數配置,該方式不支持mongodb 3.x。

    spring.data.mongodb.host=localhost spring.data.mongodb.port=27017
    

    #代碼示例

    本文的相關例子可以查看下面倉庫中的chapter3-2-6目錄:


    請登錄后查看

    CRMEB 最后編輯于2025-01-17 09:26:25

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    1055
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服