最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring集成MongoDB的兩種方法實例

 更新時間:2021年09月14日 09:26:42   作者:程序員阿牛  
最近使用到了Spring框架,考慮到數(shù)據(jù)的格式并非有固定的字段格式,因此考慮到使用MongoDB非關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù),所以這篇文章主要給大家介紹了Spring集成MongoDB的兩種方法,需要的朋友可以參考下

前言

MongoDB是最流行的NoSQL數(shù)據(jù)庫,SpringBoot是使用Spring的最佳實踐。今天帶大家講一講SpringBoot集成MongoDB的兩種方式,MongoDB的安裝自行去官網(wǎng)查詢,本地開發(fā)最方便的做法是使用Docker方式。

一、準(zhǔn)備工作

1、工程生成

老規(guī)矩,使用https://start.spring.io/ 選擇我們要依賴的jar包,生成一個demo,然后導(dǎo)入到Idea中

2、配置項

在application.properties文件中,配置MongoDB的地址

spring.data.mongodb.database=springmongo
spring.data.mongodb.username=springmongo
spring.data.mongodb.password=springmongo
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
# 以下方式也可以,可以根據(jù)喜好來配置
# spring.data.mongodb.uri=mongodb://springmongo:springmongo@localhost:27017/springmongo

二、使用MongoTemplate

1、創(chuàng)建實體UserInfo

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
 * @author 公-眾-號:程序員阿牛
 * @Id是Spring的注解,注意不要和Mybatis的搞混
 * @Document是MongoDB的注解
 */
@Data
@Document
public class UserInfo {
    @Id
    private String userId;
    private String userName;
    private Integer age;
    private String address;
}

@Document與@Entity類似,表明是一個實體,@Id表明是主鍵

其他的Spring data mongoDB注解還有:

@Document

把一個java類聲明為mongodb的文檔,可以通過collection參數(shù)指定這個類對應(yīng)的文檔。@Document(collection="mongodb 對應(yīng) collection 名")

@Id

文檔的唯一標(biāo)識,在mongodb中為ObjectId,它是唯一的

@Indexed

聲明該字段需要索引,建索引可以大大的提高查詢效率。

@CompoundIndex

復(fù)合索引的聲明,建復(fù)合索引可以有效地提高多字段的查詢效率。

@Field

給映射存儲到 mongodb 的字段取別名

@Dbref

標(biāo)識引用其他文檔,這個文檔有可能在另外的數(shù)據(jù)庫中

@Version

標(biāo)識改屬性作為版本控制

@Transient

默認(rèn)情況下所有的私有字段都映射到文檔,該注解標(biāo)識的字段從存儲在數(shù)據(jù)庫中的字段列中排除(即該字段不保存到 mongodb)

2、定義接口

/**
 * @author 公-眾-號:程序員阿牛
 */
public interface UserInfoDAO {

    public UserInfo save(UserInfo userInfo);

    public UserInfo getUser(String userId);
}

3、接口實現(xiàn)

/**
 * @author 公-眾-號:程序員阿牛
 */
@Repository
public class UserInfoDaoImpl implements UserInfoDAO {
    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public UserInfo save(UserInfo userInfo) {
        return mongoTemplate.save(userInfo);
    }

    @Override
    public UserInfo getUser(String userId) {
        UserInfo userInfo = mongoTemplate.findOne(Query.query(Criteria.where("userId").is(userId)),UserInfo.class);
        return userInfo;
    }
}

4、定義調(diào)用controller

/**
 * @author 公-眾-號:程序員阿牛
 */
@RestController
public class UserInfoController {
    @Autowired
    private UserInfoDAO userInfoDAO;
    @RequestMapping("/getUser/{userId}")
    public UserInfo getUserInfo(@PathVariable("userId")String userId){
        return userInfoDAO.getUser(userId);
    }

    @PostMapping("/addUser")
    public UserInfo addUserInfo(@RequestBody UserInfo userInfo){
        return userInfoDAO.save(userInfo);
    }

}

5、結(jié)果

使用idea自帶的httpclient測試一下

測試結(jié)果如下:

三、使用MongoRepository

1、定義接口

/**
 * @author 公-眾-號:程序員阿牛
 * 這里使用的spring-data抽象的Repository接口,有興趣的可以自己去研究一下    
 */
@Repository
public interface UserInfoRepository extends MongoRepository<UserInfo, String> {
}

通過繼承接口,spring data會自動實現(xiàn)基本的crud方法,同時,還支持通過方法的形式擴(kuò)展自己想要的方法,例如通過以下關(guān)鍵詞擴(kuò)展(圖片在網(wǎng)上找的):

自定義查詢方法,格式為“find/get/readBy+字段名+方法后綴”,方法傳進(jìn)的參數(shù)即字段的值。

支持的部分常用方法后綴有:


2、定義調(diào)用的controller

/**
 * @author 公-眾-號:程序員阿牛
 */
@RestController
public class UserInfo2Controller {
    @Autowired
    private UserInfoRepository userInfoRepository;
    @RequestMapping("/getUser2/{userId}")
    public Optional<UserInfo> getUserInfo(@PathVariable("userId")String userId){
        return userInfoRepository.findById(userId);
    }

    @PostMapping("/addUser2")
    public UserInfo addUserInfo(@RequestBody UserInfo userInfo){
        return userInfoRepository.save(userInfo);
    }

}

3、結(jié)果

使用idea自帶的httpclient測試一下

測試結(jié)果如下:

小結(jié)

本文基于的SpringBoot版本是2.5.4,兩種方式都可以實現(xiàn)與Spring的集成,具體使用哪一種根據(jù)實際的需要即可
,下一篇繼續(xù)

總結(jié)

到此這篇關(guān)于Spring集成MongoDB的兩種方法的文章就介紹到這了,更多相關(guān)Spring集成MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java關(guān)于JDK1.8新特性的Stream流

    Java關(guān)于JDK1.8新特性的Stream流

    這篇文章主要介紹了版本薇JDK1.8 的Java中的Stream流,Stream流是一個來自數(shù)據(jù)源的元素隊列并支持聚合操作,感興趣的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • springboot2.6.4集成swagger3.0遇到的坑及解決方法

    springboot2.6.4集成swagger3.0遇到的坑及解決方法

    這篇文章主要介紹了springboot2.6.4如何集成swagger3.0,在集成的過程中遇到很多問題,本文給大家分享四種問題及相應(yīng)的解決方案,需要的朋友可以參考下
    2022-03-03
  • 淺析java中常用的定時任務(wù)框架-單體

    淺析java中常用的定時任務(wù)框架-單體

    這篇文章主要帶大家了解常用的單體應(yīng)用定時任務(wù)框架以及掌握定時任務(wù)在單體中如何使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • 利用logback 設(shè)置不同包下的日志級別

    利用logback 設(shè)置不同包下的日志級別

    這篇文章主要介紹了利用logback 設(shè)置不同包下的日志級別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Spring中利用IOC實現(xiàn)注入的方式

    Spring中利用IOC實現(xiàn)注入的方式

    Spring IOC(控制反轉(zhuǎn))實現(xiàn)依賴注入,將對象創(chuàng)建和依賴關(guān)系的管理交由Spring容器處理,通過注解或XML配置,實現(xiàn)對象之間的松耦合,提高代碼復(fù)用性和可維護(hù)性
    2023-04-04
  • Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程

    Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+mysql+maven+tomcat實現(xiàn)一個文創(chuàng)商城系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • 圖文詳解JAVA實現(xiàn)快速排序

    圖文詳解JAVA實現(xiàn)快速排序

    這篇文章主要給大家介紹了關(guān)于JAVA實現(xiàn)快速排序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • java之this關(guān)鍵字用法實例分析

    java之this關(guān)鍵字用法實例分析

    這篇文章主要介紹了java之this關(guān)鍵字用法實例分析,較為詳細(xì)的講述了Java中this關(guān)鍵字的用法及適用范圍,并附帶實例程序加以說明,需要的朋友可以參考下
    2014-09-09
  • Java類的加載連接和初始化實例分析

    Java類的加載連接和初始化實例分析

    這篇文章主要介紹了Java類的加載連接和初始化,結(jié)合具體實例形式分析了java類的加載、連接、初始化相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • Spring boot文件路徑映射配置代碼實例

    Spring boot文件路徑映射配置代碼實例

    這篇文章主要介紹了Spring boot文件路徑映射配置代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論

潢川县| 治多县| 兴化市| 东乡县| 莱州市| 武义县| 罗城| 竹山县| 保德县| 郴州市| 遂平县| 仲巴县| 灵武市| 朔州市| 湖州市| 黑山县| 徐闻县| 黄浦区| 扶风县| 潼南县| 西峡县| 辽源市| 德安县| 临夏市| 阳朔县| 灵川县| 永定县| 甘孜| 泸水县| 玉田县| 浦北县| 盐城市| 武清区| 盈江县| 山阴县| 宜黄县| 沧源| 闸北区| 息烽县| 兴隆县| 城口县|