spring-data-mongodb之MongoTemplate 添加数据     

今天我们来学习下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方法
}


实体类中的注解解释如下:

  • Document注解标识这是一个文档,等同mysql中的表,collection值表示mongodb中集合的名称,不写默认为实体类名article。

  • Id注解为主键标识

  • 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看数据保存了没

QQ20160829-0@2x.png


源码地址:spring-data-mongodb

扫描下方二维码,加入Java方向技术交流讨论群。暗号:加群