1. 程式人生 > >spring-data-mongodb之MongoTemplate 新增資料

spring-data-mongodb之MongoTemplate 新增資料

首先建立一個實體類,我們這邊用文章來做實體類,定義如下欄位:

注意實體類要建在之前配置轉換目錄的包下面,上篇文章applicationContent.xml裡的配置,
base-package路徑對了框架才會將實體類與mongodb中的集合對應起來。

<!-- 自動掃描以下包的有Doucment註解的類 -->
<mongo:mapping-converter id="mappingConverter" base-package="com.cxytiandi.mongo.document" 
    type-mapper-ref="defaultMongoTypeMapper">
</mongo:mapping-converter>
import java.util.Date;
import java.util.List;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
 * 文章資訊
 * @author yinjihuan
 *
 */
@Document(collection = "article_info"
) public class Article { @Id private String id; @Field("title") private String title; @Field("url") private String url; @Field("author") private String author; @Field("tags") private List<String> tags; @Field("visit_count") private Long visitCount; @Field
("add_time") private Date addTime; //省略get set方法 }

實體類中的註解解釋如下:
1.Document註解標識這是一個文件,等同mysql中的表,collection值表示mongodb中集合的名稱,不寫預設為實體類名article。
2.Id註解為主鍵標識
3.Field註解為欄位標識,指定值為欄位名稱,這邊有個小技巧,之所有spring-data.mongodb中有這樣的註解,是為了能夠讓使用者自定義欄位名稱,可以和實體類不一致,還有個好處就是可以用縮寫,比如username我們可以配置成unane或者un,這樣的好處是節省了儲存空間,mongodb的儲存方式是key value形式的,每個key就會重複儲存,key其實就佔了很大一份儲存空間。

接下來可以操作資料庫了,接著上次,在測試類裡寫程式碼

/**
 * 初始化文章資訊
 * @author yinjihuan
 */
public static void initArticle() {
    //迴圈新增
    for (int i = 0; i < 10; i++) {
        Article article = new Article();
        article.setTitle("MongoTemplate的基本使用");
        article.setAuthor("yinjihuan");
        article.setUrl("http://cxytiandi.com/blog/detail/" + i);
        article.setTags(Arrays.asList("java", "mongodb", "spring"));
        article.setVisitCount(0L);
        article.setAddTime(new Date());
        mongoTemplate.save(article);
    }
    
    //批量新增
    List<Article> articles = new ArrayList<>(10);
    for (int i = 0; i < 10; i++) {
        Article article = new Article();
        article.setTitle("MongoTemplate的基本使用");
        article.setAuthor("yinjihuan");
        article.setUrl("http://cxytiandi.com/blog/detail/" + i);
        article.setTags(Arrays.asList("java", "mongodb", "spring"));
        article.setVisitCount(0L);
        article.setAddTime(new Date());
        articles.add(article);
    }
    mongoTemplate.insert(articles, Article.class);
  
}

在資料量大的情況下批量新增效能會更好哦。

執行程式碼我們進入mongodb看資料儲存了沒