建立一個springboot項目
然後pom.xml檔案:(從pom檔案裡面可以看出,就一個包導入就可以了。)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jc</groupId>
<artifactId>mongodemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mongodemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--mongodb的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然後,yml檔案:
spring:
data:
mongodb:
uri: mongodb://IP位址:端口(27017或者你設定的)/(資料庫的名稱)
到此,配置的條條框框(雖然沒啥)已經搞完,那麼我們開始進入使用環節。
第一步是幹嘛呢?
先看下,mongodb裡面資料的格式:

從上邊截圖可以看到,這裡面的Collections(大集合),其實就是類似mysql裡面的表的那種東西。然後右邊的框,可以看到有個Key的概念,其實就是指這個Collections(大集合)裡面,你需要擷取的小集合資訊,在這個小集合裡面,實際上是對應一個實體類的,取值的時候就get方法就可以。
上面是簡單的介紹一下,其實我們還是看代碼吧:
那麼,我們先來建一個實體類吧,
UserEntity:
package com.jc.mongodemo.pojo;
import java.io.Serializable;
/**
* @Author: JCccc
* @CreateTime: 2018-09-28
* @Description:
*/
public class UserEntity implements Serializable {
private static final long serialVersionUID = -3258839839160856613L;
private Long id;
private String userName;
private String passWord;
private String type;
@Override
public String toString() {
return "UserEntity{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
", type='" + type + '\'' +
'}';
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
好了,這裡需要注意的是,上面實體類的字段,是必須一 一 對 應 mongodb裡面某個小集合的 字段的!!!!!否則 ,不能成功取資料!(當然我們這教程是從0開始, 是以我們規定好,插入就行了。 後面取當然也就一一對應了。 但是如果你是直接上來就取資料,那麼你就得注意對應了!)
然後寫個方法類吧,我這裡沒嚴格解耦,
UserDaoImpl:
package com.jc.mongodemo.dao;
import com.jc.mongodemo.pojo.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
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;
/**
* @Author: JCccc
* @CreateTime: 2018-09-28
* @Description:
*/
@Component
public class UserDaoImpl {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 建立對象
* @param user
*/
public void saveUser(UserEntity user) {
mongoTemplate.save(user);
}
public List<UserEntity> findUserByType(String type) {
Query query=new Query(Criteria.where("type").is(type));
List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class);
return userlist;
}
public List<UserEntity> findUserByCollection(String CollectionName,String type) {
Query query=new Query(Criteria.where("type").is(type));
List<UserEntity> userlist = mongoTemplate.findAllAndRemove(query , UserEntity.class,CollectionName);
return userlist;
}
/**
* 根據使用者名查詢對象
* @param userName
* @return
*/
public UserEntity findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user = mongoTemplate.findOne(query , UserEntity.class);
return user;
}
/**
* 更新對象
* @param user
*/
public void updateUser(UserEntity user) {
Query query=new Query(Criteria.where("id").is(user.getId()));
Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
//更新查詢傳回結果集的第一條
mongoTemplate.updateFirst(query,update,UserEntity.class);
//更新查詢傳回結果集的所有
// mongoTemplate.updateMulti(query,update,UserEntity.class);
}
/**
* 删除對象
* @param id
*/
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserEntity.class);
}
}
從上邊可以看到,已經開始使用mongodb了!!!! 都開始往裡面CRUD了! 關鍵點在于啥???
關鍵點:
@Autowired private MongoTemplate mongoTemplate;
這就是告訴項目,我這裡要注入mongodb的使用!
好了,然後我們去test裡面去調用一下方法結束我們這個簡單到極緻的教程吧:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodemoApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private UserDaoImpl userDao;
//...............空着先
}
然後開始嘗試調用方法:
這是增加一個使用者資訊。
public void testSaveUser() throws Exception {
UserEntity user=new UserEntity();
user.setId(106l);
user.setUserName("小凱");
user.setPassWord("fffooo123");
user.setType("A");
userDao.saveUser(user);
}
這是查詢一個使用者資訊。
public void findUserByUserName(){
UserEntity user= userDao.findUserByUserName("小凱");
System.out.println("user is "+user);
}
這是更新一個使用者資訊。
public void updateUser(){
UserEntity user=new UserEntity();
user.setId(106l);
user.setUserName("大凱");
user.setPassWord("11223344");
userDao.updateUser(user);
}
public void deleteUserById(){
userDao.deleteUserById(106l);
}