首页 > 其他分享 >Spring Boot 文件夹用途 DAO、DTD、VIEW、POJO

Spring Boot 文件夹用途 DAO、DTD、VIEW、POJO

时间:2023-08-07 20:32:59浏览次数:37  
标签:Spring DAO Boot 视图 文件夹 user 表中 操作 view

Spring Boot 文件夹用途 DAO、DTD、VIEW、POJO _字段


  1. DAO 文件夹: 用于存放数据访问对象(Data Access Object),这些类用于封装对数据库的访问和操作,提供了一种与底层数据存储交互的接口。DAO 层负责处理数据的持久化和检索,将数据操作与业务逻辑解耦。
  2. DTO 文件夹: 用于存放数据传输对象(Data Transfer Object),这些类用于在不同层之间传输数据。DTO 类主要用于封装多个实体类的字段,以便在不同层之间进行数据交换,避免数据冗余和不必要的暴露。
  3. view 文件夹: 用于存放视图层(View layer),通常包含与前端交互的模板文件(如 JSP、Thymeleaf、Freemarker)或前端资源文件(如 CSS、JavaScript)。视图层负责将数据展示给用户,并处理用户的输入。
  4. mapper 文件夹: 用于存放数据映射器(Mapper),这些类用于实现实体类和DTO之间的转换。在某些情况下,实体类的结构和DTO的结构并不完全一样,因此需要使用 Mapper 类来处理它们之间的映射。
  5. service 文件夹: 用于存放服务层(Service layer),这些类包含了业务逻辑的实现。服务层负责处理业务逻辑,对来自 DAO 层的数据进行处理,并将结果传递给控制器层。
  6. controller 文件夹: 用于存放控制器层(Controller layer),这些类负责处理用户请求和路由,接收来自视图层的数据和用户输入,调用服务层处理业务逻辑,并将结果返回给视图层进行展示。

数据层

POJO对象

POJO = plain ordinary Java object = 普通Java对象

PO:持久对象,与数据库中的表相映射的Java对象

VO:业务层之间数据传递的对象

POJO:简单无规则Java对象,只有属性+get+set方法

实体层

entity

Entity = 实体

严格和数据库相对应,数据库中有什么字段,entity包中的类就有什么字段。因此当操作表时,操作这个类即可。比如user表中有name、id、age,则entity包中对应的同名类也只有这三个同名属性。


模型层

model

Model = 模型

当用model当包名时,一般里面存的是实体类的模型,用来给后端用的。比如user表中有name、id、age,出于安全原因,我们需要把用户的密码定义在另一表中,即user_passwd表,但进行相关操作时,我们往往需要将两个表关联使用,每次定义都很麻烦。因此可以在model层中定义user_model类,将user表中的信息与user_passwd表中的信息整合成一张综合表,这样在进行操作时只需调用综合表,就可以完成对两个表的关联操作


视图层

view

View = 视图


      当用view当包名时,一般里面存放的是对实体表的映射类(视图类),是用来给前端用的。

即:有时候我们仅仅需要获得某一个表的几个字段,所以此时可以用view存储这几个字段。

比如user表中有name、id、age,出于某些原因,我们只需要向用户展示name和id值,但进行相关操作时,我们往往需要对user表进行很复杂读处理,每次定义都很麻烦。

因此可以在view层中定义user_view类,将user表中的name、id存入user_view视图,这样在进行操作时只需调用视图表,就可以完成相对应的操作


数据访问层

DAO

主要针对于数据表的操作,可以理解为一张数据表,就有一个DAO与之对应,与数据库的操作,增删改查等方法

举例:对于user类,其对应的dao包就是对user表中数据的增删改查方法。


mapper

mapper层 = dao层,若使用mybatis框架,则其生成的类名字是mapper,其实就是dao层。


业务层

service

由于Dao里面存放了对表操作的方法,entity类中存放了映射表的POJO类。

Service的作用就是将Dao和entity类整合起来,进行再次封装,封装成一个方法,我们调用这个方法,就实现了对某个表的增删改查操作。

控制层

Controller

负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。


DTO

DTO = Data Transfer Object = 数据传输对象,与view的用法相同,不过是叫法不同

总结

  1. 如果想对几个表综合操作,就用domain
  2. 如果是严格对数据库表操作,就用entity
  3. 如果想显示某个几个表的综合信息,就用model,注意model包一般放在service层。
  4. 如果只想展示某个表中的几段信息,就用view,注意view包一般放在controller层




注意:以上的文件夹结构和用途是一种通用的设计模式,并不是强制性的规定。在实际项目中,根据项目规模和复杂度,可能会有不同的组织方式和文件夹命名。重要的是保持清晰的架构和代码组织,以便于项目的维护和扩展。

标签:Spring,DAO,Boot,视图,文件夹,user,表中,操作,view
From: https://blog.51cto.com/u_13119980/6997448

相关文章

  • Spring事件监听机制
    背景当我们的数据发生变化时,有很多别的业务逻辑需要去做,那么很适合使用事件监听来解耦合。比如目前做过的一个接口,会去修改指令的状态,修改完之后,需要调用持仓、额度等接口,那么每次有新增逻辑都需要来改我的这个接口,这很不方便,我完全可以修改完了之后,直接发布一个事件,让别的模块来......
  • SpringSecurity5.7+最新案例 -- 授权 --
    一、前提书接上回SpringSecurity5.7+最新案例--用户名密码+验证码+记住我······本文继续处理SpringSecurity授权......目前由难->简,即自定义数据库授权,注解授权,config配置授权二、自定义授权0.数据准备SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;----......
  • springboot的AOP整理总结
    aop是spring的两大功能模块之一,功能非常强大,为解耦提供了非常优秀的解决方案。现在就以springboot中aop的使用来了解一下aop。一:使用aop来完成全局请求日志处理pom文件如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmln......
  • springboot中的缓存介绍
    前言Spring框架支持透明地向应用程序添加缓存对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法(包括增删查改等),从而减少操作数据的执行次数(主要是查询,直接从缓存中读取数据),同时不会对程序本身造成任何干扰。SpringBoot继承了Spring框架的缓存管理功能,通过使用@Enable......
  • springboot中redis作为缓存使用
    springboot中redis作为缓存使用springboot中的redis作为缓存使用application.yamlserver:port:8089#servlet:#context-path:/demoRedis1spring:redis:host:127.0.0.1port:6379password:pom文件<!--添加的依赖--><!--Redis......
  • SpringBoot学习
    SpringBoot学习1.SpringBoot入门1.1SpringbootWeb项目pom.xml基本配置 <properties> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot......
  • springboot集成seata1.5.2+nacos2.1.1
    一、前言Seata出现前,大部分公司使用的都是TCC或者MQ(RocketMq)等来解决分布式事务的问题,TCC代码编写复杂,每个业务均需要实现三个入口,侵入性强,RocketMQ保证的是最终一致性。二、环境准备1、nacos:(这里采用最新版本2.1.1)下载地址:https://github.com/alibaba/nacos/releases......
  • spring cloud gateway 配置动态路由
    在mysql建表存储路由信息DROPTABLEIFEXISTS`route`;CREATETABLE`route`(`id`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNOTNULL,`uri`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNULLDEFAULTNULL,`predicates`......
  • Spring—ObjectProvider更加宽泛的依赖注入
    1.Spring依赖注入在Spring4.3之后,引入了一个新特性:当构造方法只有一个参数时,可以不使用@Autowired注解。@ServicepublicclassFooService{privateFooRepositoryfooRepository;publicFooService(FooRepositoryfooRepository){this.fooRepository=foo......
  • springboot智能3D导诊系统源码,基于规则模板的开发原理
    互联网智慧3D导诊系统源码通过智能导诊,进行自助问询及挂号服务,减轻导诊台护士压力,挂号更加方便快捷。技术架构:springboot+redis+mybatisplus+mysql+RocketMQ  智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建......