spring-data-mongodb之MongoTemplate 添加数据

首先创建一个实体类,我们这边用文章来做实体类,定义如下字段:

注意实体类要建在之前配置转换目录的包下面,上篇文章applicationContent.xml里的配置,
base-package路径对了框架才会将实体类与mongodb中的集合对应起来。


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

spring-data-mongodb之MongoTemplate 添加数据_第1张图片

作者:尹吉欢
链接:https://www.jianshu.com/p/5940d93c533f
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


你可能感兴趣的:(j2ee与Java,web)