上一篇文章已經(jīng)講了如何去動(dòng)態(tài)注入一個(gè)MongoTemplate,接下來(lái)我來(lái)給大家演示如何使用MongoTemplate完成常用的CRUD
公司之前用的是舊的mongoClient,不能直接操作對(duì)象,MongoTemplate正好彌補(bǔ)了這個(gè)不足,分享給大家
準(zhǔn)備PO對(duì)象
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* @author mr_h
* @createTime 2017/9/25
* @description //TODO
*/
@Document(collection = "collection_name")
public class UserPO {
@Indexed
@Field("user_id")
private Long userId;
@Field("username")
private String username;
@Field("password")
private String password;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
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;
}
}
解釋
- @Document 用來(lái)表明關(guān)聯(lián)的mongo中的那個(gè)collection(類似于表名)
- @Indexed 為某個(gè)字段建立索引
- @Field 聲明屬性對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的哪個(gè)字段
--------------------------------開始操作----------------------------------
插入數(shù)據(jù)
//插入一條
UserPO userPO = new UserPO();
userPO.setUserId(1L);
userPO.setUsername("username");
userPO.setPassword("password");
mongoTemplate.insert(userPO);
//插入多條
LinkedList<UserPO> pos = Lists.newLinkedList();
UserPO userPO = new UserPO();
userPO.setUserId(1L);
userPO.setUsername("username");
userPO.setPassword("password");
pos.add(userPO);//集合中可以放多個(gè)
mongoTemplate.insertAll(pos);
刪除數(shù)據(jù)

image.png
可以看到有多種刪除方法,我們?cè)谶@里演示一個(gè)相對(duì)復(fù)雜的
Query query = new Query();
query.addCriteria(Criteria.where("user_id").is(1L));
mongoTemplate.findAndRemove(query,UserPO.class);
- Query是查詢條件
更改數(shù)據(jù)

image.png

image.png
更改的API大概有這些
- updateMulti 如果根據(jù)查詢條件找到對(duì)應(yīng)的多條記錄是,全部更新
- updateFirst 更改符合條件的第一個(gè)
- upsert 顧名思義 update+insert 如果根據(jù)條件沒(méi)有對(duì)應(yīng)的數(shù)據(jù),則執(zhí)行插入
- findAndModify 查詢?nèi)缓蟾?/li>
接下來(lái)演示比較復(fù)雜的findAndModify
Query query = new Query();
query.addCriteria(Criteria.where("user_id").is(1L));
Update update = new Update();
update.set("username","the new username");
mongoTemplate.findAndModify(query,update,UserPO.class);
查詢
其實(shí)看到這里 應(yīng)該查詢就不需要看了,因?yàn)樯厦娲蟛糠盅菔镜亩际窍炔樵內(nèi)缓笤偃ゲ僮鬟@條數(shù)據(jù)
Query query = new Query();
query.addCriteria(Criteria.where("user_id").is(1L));
List<UserPO> userPOS = mongoTemplate.find(query, UserPO.class);