简单的小模块创建(该项目已开源,这是创建时的笔记,如有问题尽情回复)

投诉内容模块

大家如果看不懂的可以根据下面的项目进行拉取去学习。

投诉系统地址:https://github.com/DaZuiZui/complaint_system

第一步:

在domain的包中创建实体类,然后在bo中创建Task增删改查根据需求实体类进行封装。

vo和bo

在软件开发中,常常会遇到业务对象(Business Object,BO)和值对象(Value Object,VO),它们是两种不同的设计模式,用于在不同层次上表示和处理数据。在领域驱动设计(Domain-Driven Design)中,这两个模式也被广泛应用。

  1. 业务对象(BO):业务对象是用于表示业务逻辑和业务规则的对象。它们通常包含与业务逻辑相关的方法和属性,能够封装复杂的业务操作。BO通常直接映射到数据库表或其他持久化机制,并且用于在业务逻辑层面处理数据。它们主要关注数据的处理和业务规则的执行。

  2. 值对象(VO):值对象是一种特殊类型的对象,通常用于封装一些不可变的数据或属性。它们通常不具有可修改的属性,因此可以保持不可变性。值对象通常用于表示不可变的数据集,例如日期范围、货币金额等。它们重点关注数据本身的表达,通常不包含业务逻辑。

在Java领域中,这两个概念可以与领域模型中的概念结合起来,例如:

  1. 业务对象(BO):在领域模型中,业务对象通常表示一个具体的业务实体,比如用户、订单、产品等。它们通常包含与业务逻辑紧密相关的方法和属性,能够执行各种操作来满足业务需求。

  2. 值对象(VO):在领域模型中,值对象通常用于表示不可变的、轻量级的数据对象,例如日期、货币、地址等。它们通常不包含业务逻辑,而是专注于表示数据本身。

BO和VO的使用可以帮助开发人员更好地组织和管理领域模型中的数据和业务逻辑,提高代码的可维护性和扩展性。在许多项目中,这两种模式经常被结合使用,以便更好地建模业务需求。

bo中创建的token实体类

在创建实体类时添加token字段通常是为了在身份验证或安全性方面提供支持。Token是一种用于识别用户身份和授权访问权限的令牌。在许多应用程序中,特别是涉及用户身份验证和授权的应用程序中,使用token是一种常见的实践。

以下是一些情况下你可能需要在实体类中包含token字段:

  1. 身份验证和授权:在用户登录过程中,系统可能会颁发一个令牌(token),用于标识该用户的身份,以便在以后的请求中进行验证。

  2. 安全性:在某些情况下,系统需要验证客户端请求的合法性。这时,客户端可以通过包含令牌(token)来验证其合法性,以获得对受限资源的访问权限。

  3. 会话管理:Token经常被用来跟踪用户会话,尤其是在Web应用程序中。它可以用来管理用户在应用程序中的状态,或者用来保持用户的登录状态持久化。

  4. 单点登录:在复杂的系统中,可能存在多个相关联的应用程序,用户可能需要进行单点登录。这时,可以使用一个统一的令牌来管理用户在这些应用程序之间的访问。

当你需要实现这些功能时,你可能会在实体类中包含token字段。通常,这个字段可以作为一个标识符,用来识别特定用户或客户端。不过,确保在实现这些功能时,采取适当的安全措施来保护token的安全性,并防止其被不良方使用。

后端返回给前端的数据封装题

ResponseVo< T > :T是泛型

T是Java中的泛型类型参数,它可以代表任意类型。在ResponseVo<T>中,T是一个占位符,表示ResponseVo类可以持有一个特定类型的对象。具体来说,T表示了ResponseVo中所包含的数据的类型。通过使用泛型,可以在编译时指定具体的类型,并在运行时保持类型安全性。

总结:在这种情况下,T被指定为String类型,因此data字段可以持有一个字符串对象。使用泛型能够使ResponseVo类更加灵活和通用,因为它可以适应各种不同类型的数据

Serializable:

在Java编程中,Serializable 接口是Java序列化机制的基础。它允许开发人员标记一个类的实例可以被序列化,这意味着对象的状态可以被保存下来并在以后重新构造出来。在其他编程语言中也存在类似的概念和机制,尽管具体的实现细节可能有所不同。序列化在分布式系统、数据存储、对象传输等方面都具有重要的作用。通过将对象序列化,可以方便地将对象在不同的系统之间进行传输或保存到持久性存储中,然后在需要的时候重新反序列化成对象。

序列化

序列化在计算机科学中扮演着重要的角色,其主要作用包括:

  1. 数据持久化:序列化允许将对象的状态保存到磁盘或数据库中,以便在程序重新启动时能够恢复数据。

  2. 网络通信:在网络通信中,序列化允许将对象转换为字节流以便在网络上传输。这使得可以在不同的计算机或不同的操作系统之间传输对象,从而支持分布式应用程序的开发。

  3. 深拷贝:通过序列化对象并将其重新反序列化,可以创建对象的深拷贝,即得到与原始对象完全独立的副本。

  4. 缓存机制:序列化允许将对象缓存到内存或磁盘中,以便在需要时能够快速检索和重用对象,从而提高程序的性能和效率。

  5. 远程方法调用:在分布式系统中,序列化允许在客户端和服务器之间进行远程方法调用(RPC),从而实现不同计算机之间的交互与通信。

  6. 版本控制:通过序列化,可以在不同版本的应用程序之间进行数据交换和兼容性处理,从而简化软件升级和维护的过程。

总的来说,序列化为跨平台数据交换和持久化存储提供了一种便捷的方法,同时也为分布式系统和网络通信提供了一种可靠的机制。

第二步

在controller(控制器)中进行Task数据增删改查的投诉内容与前端进行交互。

@CrossOrigin:

@CrossOrigin 是一个用于Java中Spring框架的注解,用于处理跨域资源共享(CORS)的问题。CORS是一种Web浏览器的安全机制,用于限制通过脚本在一个网页上的资源与来自不同域的资源的交互。如果一个网页尝试从一个不同域的服务器加载资源,那么浏览器可能会阻止这种请求,除非服务器端明确指定了允许跨域请求的策略。

@CrossOrigin 注解用于在Spring应用程序中配置允许跨域请求的策略。它可以应用在控制器类和控制器方法上。通过在相应的控制器类或方法上添加该注解,您可以指定哪些域名可以访问您的资源,以及哪些HTTP方法可以被允许。

总结:使用 @CrossOrigin 注解可以帮助您解决在Spring应用程序中处理跨域资源共享的问题。

@Api

@Api 是一个用于 Java 中基于 Swagger 的注解,用于为 RESTful API 添加说明信息。Swagger 是一个用于设计、构建、记录和使用 RESTful API 的开源框架。它允许开发人员定义和描述 API 接口,包括输入和输出参数、错误码以及其他相关信息。

@Api 注解用于为控制器类添加说明信息,可以包含一些元数据,如 API 的描述、标签、作者、许可证等。

在API文档中,通常会看到valuetags这两个字段。这些字段通常用于描述API中的不同部分和元素。

  1. value: 在API文档中,value字段通常用于表示特定元素的值或描述。例如,如果你在文档中看到一个属性或参数有一个value字段,那么这个字段可能包含该属性或参数的值或描述信息,以便用户能够了解该属性或参数的具体含义和用法。

  2. tags: tags字段通常用于标记API文档中的不同部分,以便对文档进行分类或归类。通过使用tags字段,可以使用户更容易地浏览和查找文档中的不同部分。例如,如果一个API文档涵盖了多个功能或模块,使用tags字段可以将这些不同的功能或模块进行分类,使得用户可以更快速地找到他们感兴趣的内容。

这两个字段通常用于API文档的元数据,以便使用户更容易理解和浏览文档中的内容。

总结:通过使用 Swagger 注解,开发人员可以更轻松地为他们的 API 生成文档,这使得 API 的使用和理解更加直观和便捷。

@RestController

@RestController 是一个用于 Java 中基于 Spring 框架的注解,它结合了 @Controller@ResponseBody 注解的功能。

在 Spring MVC 中,@Controller 用于标识一个类作为处理请求的控制器,它可以处理传入的 HTTP 请求并返回相应的视图。而 @ResponseBody 用于指示方法返回的对象应该被写入 HTTP 响应正文中。

使用 @RestController 注解可以将一个类标记为 RESTful Web 服务的控制器,它使得响应体直接以 JSON 或 XML 格式返回给客户端,而不需要通过视图解析器进行渲染。这使得编写基于 RESTful 架构的 Web 服务变得更加简单和直观。

总结:使用 @RestController 注解可以简化开发 RESTful Web 服务的过程,并使得返回 JSON 或 XML 数据变得更加简单和直观。

JSONArray.toJSONString

在Java中,JSONArrayorg.json库中的一个类,用于处理JSON数组。toJSONString()JSONArray类中的一个方法,用于将JSON数组转换为字符串表示形式。这个方法将JSONArray对象中的数据转换为符合JSON格式的字符串。

总结: 这个字符串是一个有效的JSON表示形式,可以在需要时发送给其他系统或解析为Java对象。

JSON

JSON(JavaScript Object Notation)数组是一种数据格式,用于存储值的有序列表。它通常用于表示多个值的集合。JSON数组使用方括号([])来包裹其中的元素,并且各个元素之间使用逗号进行分隔。

这是一个包含三个对象的JSON数组。每个对象都包含nameagecity三个键,以及对应的值。这种灵活性使得JSON数组成为在各种应用程序中传输和存储数据的一种流行格式

@RequestMapping

@RequestMapping 是一个用于 Java 中基于 Spring 框架的注解,它用于将 HTTP 请求映射到控制器的处理方法。

在 Spring MVC 中,@RequestMapping 注解可以应用在控制器的方法上,用于指定该方法可以处理哪种类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等)以及请求的 URL 路径。

总结:使用 @RequestMapping 注解使得开发人员可以轻松地将 HTTP 请求映射到相应的处理方法,从而更有效地构建处理 RESTful 请求的控制器。

@Autowired

@Autowired 是一个用于 Java 中基于 Spring 框架的注解,用于自动装配标记为 Spring bean 的依赖项。

在 Spring 中,通过将类标记为 Spring bean,可以将其纳入 Spring IoC(控制反转)容器的管理。@Autowired 注解用于自动装配这些 bean,并将其注入到需要它们的类中,以便进行依赖注入。

总结:使用 @Autowired 注解可以使得依赖注入变得更加简单和方便,同时提高了代码的可读性和可维护性。

@PostMapping

@PostMapping 是一个用于 Java 中基于 Spring 框架的注解,用于将HTTP POST请求映射到特定的处理方法。

在 Spring MVC 中,@PostMapping 注解是@RequestMapping(method = RequestMethod.POST)的特定变体。它用于标识一个方法可以处理来自客户端的HTTP POST请求,并执行相应的逻辑。

总结:使用 @PostMapping 注解可以使得处理POST请求的映射变得更加直观和简单,同时提高代码的可读性和可维护性。它是处理 RESTful 请求时的常见用法之一。

@ApiOperation

@ApiOperation 是一个用于 Java 中基于 Swagger 的注解,用于为特定的 RESTful API 添加自定义的操作描述信息。

Swagger 是一个用于设计、构建、记录和使用 RESTful API 的开源框架,它可以帮助开发人员自动生成 API 文档并提供交互式文档。@ApiOperation 注解用于描述一个特定的操作,例如一个 HTTP 请求的方法,可以包括操作的摘要、描述、标签、响应信息等。

总结:通过使用 Swagger 注解,开发人员可以更方便地为他们的 API 自动生成文档,从而提高了 API 的可用性和可理解性。

@RequestBody

在Java Spring框架中,@RequestBody是一个注解,用于将HTTP请求正文中的数据绑定到方法的参数上。它通常与Spring MVC中的控制器方法一起使用。当你希望将HTTP请求的JSON或XML数据映射到一个对象时,你可以使用@RequestBody注解。

第三步:

在mapper包创建TaskMapper(投诉内容持久层),并编写增删改查的接口方法,并根据需求定义变量。

总结:需要注意的是,使用@RequestBody注解时,需要确保请求的数据格式与你的Java类的属性匹配,否则可能会导致映射失败。

@Mapper

"@Mapper" 是一个常见的 Java 注解,通常与 MyBatis 框架一起使用。MyBatis 是一个持久层框架,它简化了使用 JDBC 时的许多繁琐操作。在 MyBatis 中,@Mapper 注解用于指示 MyBatis 框架将该接口视为映射器(Mapper)。映射器是用于定义 SQL 查询、插入、更新和删除操作的接口。使用 @Mapper 注解后,可以通过在 XML 文件中编写 SQL 或者使用注解来实现对数据库的操作。

通常情况下,@Mapper 注解用于将 Java 接口和 XML 映射文件进行绑定,使得接口中的方法与 XML 文件中的 SQL 语句相对应。这样,开发人员可以在接口中定义数据库操作方法,然后通过 MyBatis 框架执行这些方法,从而简化了与数据库的交互过程。

第四步:

在serivce包中进行创建接口TaskService(投诉内容业务接口),并编写TaskService的增删改查接口的方法。

这里面的参数主要对接的是domain下的bo包。

@Service

@Service 是一个 Spring 框架中的注解,用于将标注的类标识为服务类。它是 Spring 框架中的一个关键注解,用于表示该类是用于处理业务逻辑的组件。在应用程序中,@Service 注解通常与 @Autowired 注解一起使用,以便将服务类注入到其他类中,从而实现组件之间的解耦和依赖注入。

通过使用 @Service 注解,开发人员可以将业务逻辑和数据操作与控制器逻辑分离,从而提高应用程序的可维护性和可测试性。Spring 框架可以扫描标有 @Service 注解的类,并将其实例化为 Spring 容器中的 bean,这样它们就可以在整个应用程序中被自动装配和调用。

总而言之,@Service 注解是用于表示一个类是业务逻辑的一部分,并且应该由 Spring 容器来管理和实例化。

后端返回给前端的数据封装题

ResponseVo是在domain中下的vo包中。

第五步:

在service包下的impl的包中添加TaskServiceImpl(投诉内容业务接口实现类)的方法,并且编写Task的增删改查的实现类。

在 Java 中,if 语句用于在满足指定条件时执行特定的代码块。在给定的代码片段中,aLong 是一个变量,它可能是一个 Long 类型的对象。.longValue() 是用于将 Long 对象转换为基本数据类型 long 的方法。

if 语句中,表达式 aLong.longValue() == 0 用于检查 aLong 的值是否等于 0。如果 aLong 的值为 0,则条件为真(true),因此 if 语句后面的大括号中的代码块将被执行。

需要注意的是,由于 long 是一个基本数据类型,因此使用 == 比较两个 long 值的大小是合适的。然而,在一般情况下,比较 Long 对象时通常推荐使用 equals 方法,因为这样可以确保比较的是值而不是对象的引用。

第六步:

在resources资源包中的mybatis包中的mapper包中创建TaskMapper.xml中,创建与数据库连接的接口。

xml就是数据库与动态语句连接。

id是TaskMapper的数据,而resultType是定义需要查询的所在包的位置。

select

insert

delete

update

其他模块扩展知识点

  1. map.get("error"):这会从映射中检索与键“error”关联的值。映射是一种存储键值对的数据结构,其中每个键都是唯一的。

  2. != null:这是Java中的比较运算符,用于检查从映射中检索的值是否不为null。在Java中,“null”是一个特殊的文字,可以赋值给对象引用,表示对象不存在。

  3. if (map.get("error") != null):这是条件语句。如果与键“error”关联的值不为null,则会执行大括号内的代码块。否则,如果该值为null,则会跳过代码块。

总体而言,这行代码用于在映射中与键“error”关联的值不为null时执行某些操作,通常意味着程序中存在错误或需要处理的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值