3-1 你们的项目是如何进行参数校验的
我们项目中使用Java Bean Validation规范进行参数校验,该规范定义了一组注解,用于对方法参数、类属性等进行校验。
在需要进行参数校验的对象上添加注解,如@NotNull、@NotBlank、@Min、@Max等。这些注解可以限制参数的非空、最小值、最大值等条件。
在方法中使用@Valid注解对参数对象进行校验,在方法参数上使用@BindingResult对象接收校验结果,并进行错误处理。
在错误处理中,可以获取到校验失败的字段和对应的错误信息,并返回给前端或进行其他操作。
可以自定义校验注解和校验器,以满足特定的业务需求。可以自定义一个@UniqueUsername注解,用于校验用户名的唯一性。
除了使用Java Bean Validation,还可以结合其他框架或工具进行参数校验,如Spring Validation等。
通过以上方式在项目中进行参数校验,确保传入的参数符合预期的规则和条件。
3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么
我们这个问答系统用到了两张表, 互动问题表 和 互动回答评论表。
互动问题表中的主要字段有 问题id、问题标题、问题描述、所属课程id、所属课程章id、所属课程节id、提问学员id、最新一个回答的id、问题下回答的数量、是否匿名、是否被隐藏、管理端查看问题状态、提问时间、更新时间 。
互动回答评论表中的主要字段有 回复id、问题id、回复的上级回答id、回复者id、回复内容、回复的目标用户id、回复的目标回复id、评论数量、点赞数量、是否被隐藏、是否匿名、创建时间、更新时间。
表间关系:一个用户可以提多个问题,也可以回答多个问题,和对一个问题回答多次,一个问题可以有多个回答,一个回答也可以有多个回答及评论。
3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论
这是因为在存储问题和评论这种可能包含多个属性和嵌套结构的数据时,MongoDB比MySQL更合适。
因为MongoDB是一个非关系型(NoSQL)数据库,它能够轻松地处理复杂的数据结构和变化频繁的数据模式。
相较之下MySQL是一个关系型(RDBMS)数据库,它用表格的形式组织数据,并通过事先定义好的模式进行存储。
当需要存储包含多个属性和嵌套结构的数据时,MySQL需要创建多个表格并进行关联,而这样的操作会导致复杂度提高。
除此之外,MongoDB采用的是BSON(Binary JSON)格式,它能够更有效地存储和检索JSON数据类型。
所以在存储问题和评论这种可能包含大量JSON格式数据的情况下,MongoDB也能有更好的性能表现。
最后,MongoDB还支持高效的查询和索引功能,能够满足实时访问和快速检索数据的需求。
所以,在需要高度灵活性、可扩展性和高性能的场景中,往往选择MongoDB。