文章评论实体类的编写 | 学习笔记

简介: 快速学习 文章评论实体类的编写

开发者学堂课程【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

image.png

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() {

Returncomment{+

id=’” + id + /’’ +

,content=’” + content + /’’+

‘’,publishtime=’’’ + publishtime +

‘’,userid=’’’ + userid + /’’ +

‘’,nickname=’’’ + nickname + /’’ +

‘’,creatdatetime=’’’ + creatdatetime +

‘’,likenum=’’’ + likenum +

‘’,replynum=’’’ + replynum +

‘’,state=’’’ + state + /’’ +

‘’,parentid=’’’ + parentid + /’’ +

‘’,articleid=’’’ + articleid + /’’ +

}

}

}

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1094 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1771 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
703 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
664 13
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
461 5