开发者学堂课程【MongoDB精讲课程(上):文章评论实体类的编写】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/726/detail/12967
文章评论实体类的编写
内容介绍:
一、文章评论实体类的编写
一、文章评论实体类的编写
编写实体类,用 Java 映射 MongoDB,实体类必不可少。和关系数据库,比如 MySQL 是一模一样的。L 例如,MySQL 有一个 comment 评论表,一般情况下需要建实体类与它一一对应,同样,MongoDB 是一种松散的结构,就代表 comment 叫集合。comment 对应的数据类型可能有多种,也可能存在一个 comment 对应多个 Java 实体类,对于现在的业务,一个 comment 集合对应一个实体类的数据结构。
1.新建子包,存放实体类
创建包 cn.itcast.article,打开 idea,在 article 下边新建一个实体类,包下建包 po 用于存放实体类。
cn.itcast.article.po.comment
2.注解详解
将以下内容复制粘贴
这些字段实体的属性是 MongoDB 里面的字段是一一对应的。
Package cn.itcast.article.po;
Import org.springframework.data.annotation.Id;
Import org.springframework.data.mongodb.core.index.Indexed;
Import org.springframework.data.mongodb.core.mapping.Document;
Import org.springframework.data.mongodb.core.mapping.Field;
Import java.io.Serializable;
Import java.time.LocalDateTime;
Import java.util.date
/##
#文章评论实体类
#/
//把一个 Java 类声明为 mongodb 的文档,可以通过 collection 参数指定这个类对应的文档。
//@document(collection=”mongodb 对应 collection 名”)
//若未加@document,该 bean save 到 mongo 的 comment collection
//若添加@document,则 save 到 comment collection
@document(collection=
”comment”)
//可以省略,如果省略,则默认使用类名小写映射集合。
注解:首先要标明是一个 document,就是文档数据,现在存的数据,是用来接收文档数据的。
存完数据之后,需要指定 Collection 是 comment,写数据时会往这个集合里面映射。还有一种情况是可以省略的,如果类名 comment 这个类型,全变成小写之后,正好和 MongoDB 里面的集合名一样,那是可以省略不写的。这种情况都是指向 comment的集合。
//复合索引
//@compoundindex(def=”{’userid’:1,’nickname’:-1}”)
Public class comment implement serializable{
//主键标识,该属性的值会自动对应mongodb的主键字段”_id”,如果该属性名就叫”id”,则该注解可以省略,否则必须写。
@id
Private string:id
//主键
ID 的注解表示 ID 属性映射的是主键。也就是 MongoDB 自动生成的下划线 ID 主键。当字段的属性名就叫 ID 时,这个 ID 不写也可以。
@
”Field”(“content”)
Private string content:
//吐槽内容
Private date publishtime:
//发布日期
如果说一些在普通属性值的映射,属性的名称和字段名称对应不上,也可以强制加@field 去指向 MongoDB 里面的字段。
//添加一个单字段的索引
@Indexed
Private string userid;
//发布人 ID
Private string nickname;
//昵称
Private localdatetime creatdatetime;
//评论的日期时间
Private Integer likenum;
//点赞数
Private Integer replynum;
//回复数
Private string state;
//状态
Private string parentid;
//上级 Id
Private string nickname articleid
//Getter and setter.....
添加单字段的索引,代表添加了一个单字段的索引,注解既然可以添加单字段。也可以添加复合索引。
//复合索引
@compoundindex(def=
”(‘userid:1;’nickname:-1’’)”)
它的写法先把类写出来,然后进行定义的复合索引。定义了两个字段的复合索引。例如 ruserid 和 nickname,跟命令的写法是相同的,如果是升序跟上1,降序就跟上-1。通常情况下,可以像如上一样建,也可以用 MongoDB 命令行的方式建,最好用命令行的方式去建。如果在开发中,索引用命令行的方式去建也是非常好的一种选择,因为MongoDB 是一个松散的活动,现在插入的这个字段,有可能先建一个索引还没用。那个注解也可以实现,命令行也可以实现。具体根据项目进行选择。
Public string getID() {
return id;
}
Public void setid(string id)
This.id=id;
}
Public string getcontent(){
Return content;
}
Public void setcontent(string content){
This.content=content;
}
Public date getpublishtime () {
Return publictime
}
Public void setpublishtime(datepublishtime) {
This publishtime=publishtime;
}
Public string getuserid() {
Return userid;
}
Public void setuserid(string userid) {
This userid=userid
}
Public string getnickname() {
Return nickname;
}
Public void setnickname() {
This.nickname=nickname;
}
Public localdatetime getcreatedatetime() {
Return createdatetime;
}
Public Integer getlikenum() {
Return likenum;
}
Public void setlikenum(Integer likenum) {
This.likenum=likenum;
}
Public Integer getreplynum() {
Return replynum;
}
Public void setreplynum(Integer replynum) {
This.replynum=replynum;
}
Public string getstate() {
Return state;
}
Public void setstate(string state) {
This.state=state;
}
Public string getparentid() {
Return parentid;
}
Public void setparentid(string parentid) {
This.parentid=parentid;
}
Public string getArticleid() {
Return Articleid;
}
Public void setArticleid(string Articleid) {
This.Articleid=Articleid;
}
@override
Public string tostring() {
Return
“comment{”+
“id=’” + id + ’/’’ +
“,content=’” + content + ‘/’’+
‘’,publishtime=’’’ + publishtime +
‘’,userid=’’’ + userid + ‘/’’ +
‘’,nickname=’’’ + nickname + ‘/’’ +
‘’,creatdatetime=’’’ + creatdatetime +
‘’,likenum=’’’ + likenum +
‘’,replynum=’’’ + replynum +
‘’,state=’’’ + state + ‘/’’ +
‘’,parentid=’’’ + parentid + ‘/’’ +
‘’,articleid=’’’ + articleid + ‘/’’ +
‘}’
}
}