一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 利用Spring Boot操作MongoDB的方法教程

利用Spring Boot操作MongoDB的方法教程

2020-10-29 15:07intheworld Java教程

mongodb是最早熱門非關系數據庫的之一,使用也比較普遍,一般會用做離線數據分析來使用,放到內網的居多,下面這篇文章主要給大家介紹了利用Spring Boot操作MongoDB的方法教程,需要的朋友可以參考下

MongoDB

MongoDB作為一種NoSQL數據庫產品,其實已經非常著名了。去年,由于MongoDB安全認證的薄弱,上萬家公司中招。雖然是一則負面新聞,但是也從側面說明了MongoDB的流行程度。

下圖是DB-Engines統計的2017年5月全球數據庫引擎使用排名。從圖中可以看出,mongoDB位列總榜第五,非關系數據庫第一,非常靠前的排名。

利用Spring Boot操作MongoDB的方法教程

我個人對mongoDB并不是非常熟悉,但是經過一段時間的了解,對mongoDB的特性還是有了一些簡單的理解,這里記錄一二。

  • 首先,mongoDB作為一種非關系型數據庫,它最大的特點就是Schema非常的弱。換而言之,mongoDB的升級以及應用的重構會變得比較簡單。
  • 其次,mongoDB使用了文檔型的存儲結構,數據接口則非常接近于JSON。JSON這種數據結構不僅簡單而且也是非常流行的網絡傳輸格式。
  • 此外,mongoDB充分考慮了數據庫規模擴展的需要,所以能夠很好的適應業務發展。

話說了這么多,還是要回到實際使用上。這里我將使用Spring Boot來操作mongoDB,Spring Boot由于有Spring Data的支持,使用mongoDB還是比較輕松方便的。

方法如下:

首先是添加Spring Data mongo的配置依賴,如下所示:

?
1
compile("org.springframework.boot:spring-boot-starter-data-mongodb")

其次是在application.properties中配置mongoDB的連接參數,如下所示:

?
1
spring.data.mongodb.uri=mongodb://localhost:27017/dbname

Spring Boot配置就是這樣簡單,然后就是具體的代碼編寫了。首先,需要定義一個實體類,這里用一個User的簡單實體類來說明:

?
1
2
3
4
5
6
7
8
@Document(collection = "users")
public class User {
 @Id
 private String id;
 
 private String username;
 private Integer age;
}

這段代碼里面省略了getter和setter,所以看起來非常簡單。值得注意的一點是@Document注解,它是mongoDB專用的。了解mongoDB的話,都知道collection之于mongoDB,就像關系數據庫的table一樣。通過指定collection,可以實現實體類到mongoDB集合的映射關系。如果不顯式指定collection,Spring會根據實體類的名字去推測集合的名字。

配置完畢,實體類也實現完畢,我們需要的就是實現mongoDB的各種操作,從而把數據庫和應用程序連接起來。按照Spring data的現狀,實現數據庫操作大概有兩種方式——MongoRepository、mongoTemplate。MongoRepository是一種相對簡單的方式,它可以幫我們輕松的實現簡答的CRUD操作。

下面就是它的使用方式:

?
1
2
3
public interface UserRepository extends MongoRepository<User, Long>{
 User findByUsername(String username);
}

然后在使用數據庫的地方直接依賴注入UserRepository即可。的確非常簡單,這是因為Spring幫我們做了兩件事,首先Spring會為Repository生成bean,一般來說Spring內置的Repository及其子類都使用了@NoRepositoryBean注解,所以只有用戶定義的沒有該注解的interface才會被實例化一個bean。其次Spring會根據interface中的方法名,去自動生成CRUD操作的函數,因此我們連實現代碼都不用寫了。

使用MongoTemplate會稍微麻煩一點,但同時它能夠完成的工作也更多一些。下面是使用mongoTemplate的方式,為了展示其強大的能力,我們使用一個稍微復雜點例子。

代碼如下:

?
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
@Component
public class ArticleRepositoryImpl {
 
 MongoTemplate mongoTemplate;
 
 @Autowired
 public ArticleRepositoryImpl(MongoTemplate mongoTemplate) {
  this.mongoTemplate = mongoTemplate;
 }
 public List<Article> find(Query query) {
  return mongoTemplate.find(query, Article.class);
 }
 public Article findOne(Query query) {
  return mongoTemplate.findOne(query, Article.class);
 }
 public void update(Query query, Update update) {
  mongoTemplate.findAndModify(query, update, Article.class);
 }
 public Article save(Article article) {
  mongoTemplate.insert(article);
  return article;
 }
 
 public Article findById(String id) {
  return mongoTemplate.findById(id, Article.class);
 }
 
 public Page<Article> findPage(Page<Article> page, Query query) {
  long count = count(query);
  int pageNumber = page.getPageNumber();
  int pageSize = page.getPageSize();
  query.skip((pageNumber - 1) * pageSize).limit(pageSize);
  List<Article> rows = find(query);
  page.setContent(rows);
  return page;
 }
 
 public long count(Query query) {
  return mongoTemplate.count(query, Article.class);
 }
}

對于Article這個實體類,我們其實不需要太關心它的細節。為了實現分頁查詢的功能(主要在findPage中實現),代碼使用了略微復雜的查詢操作,這里就體現到了mongoTemplate的更為強大的定制化操作能力。而這里的component注解也只是一種聲明bean的方式。除了它之外,還有很多配置的方式,但功能都是一樣的,這里也就不深究了。

把數據庫的結果通過一個RESTful的接口返回去,就可以看到數據庫的查詢結果,代碼如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@RestController
public class SimpleRestController {
 
 private UserRepository userRepository;
 @Autowired
 public SimpleRestController(UserRepository userRepository) {
  this.userRepository = userRepository;
 }
 
 @RequestMapping(value="/users", method = RequestMethod.GET)
 public List<User> greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
  return userRepository.findAll();
 }
 
}

通過瀏覽器的訪問結果如下所示:

利用Spring Boot操作MongoDB的方法教程

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://intheworld.win/2017/05/21/mongodb與spring-boot/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人生路不在线观看完整版 | 午夜欧美精品久久久久久久 | 亚洲aⅴ天堂| 三体动漫在线观看免费完整版2022 | 色综合久久中文字幕网 | 羞羞一区二区三区四区片 | 麻豆网站视频国产在线观看 | 天天色视频 | 二次元美女互摸隐私互扒 | 天天舔天天操天天干 | 水岛津实在线 | 国产夜趣福利第一视频 | 校园春色自拍偷拍 | tube62hdxxxx日本| 精品国产欧美一区二区 | 欧美一区二区视频 | 日韩成人小视频 | 草久久网| 久久成人伊人欧洲精品AV | 四虎免费影院ww4164h | 草莓在深夜释放自己软件 | 午夜伦理:伦理片 | 深夜免费看| 日本手机在线 | 和肥岳在厨房激情 | 天美传媒果冻传媒星空传媒 | 精品久久久噜噜噜久久久app | 日麻逼| 12-14娇小videos | 色综合色狠狠天天久久婷婷基地 | 激情自拍网 | 亚洲精品国产精麻豆久久99 | 性色xxx| 四虎国产欧美成人影院 | 九九热这里只有精品视频免费 | 成人精品一区二区三区中文字幕 | 国产精品久久国产三级国电话系列 | 欧美福利在线观看 | 特黄视频免费看 | 国内精品一区二区三区东京 | boobsmilking流奶水 |