今天我们来学习下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看数据保存了没
源码地址:spring-data-mongodb