Featured image of post B/S分层简介

B/S分层简介

开发中常见的包名介绍,可能文中有地方不太对,欢迎指正。

B/S分层

①入门

dto层

大概就是 MVC 中的 model 层,主要是用来写与 数据库相对应的实体类的,并且需要有 get/set 方法

dao层

dao 层的文件习惯用 Mapper 来表示 dao 层会调用 dto层 ,并且在这一层主要就是 crud 操作

service层

service层会调用dao层和dto层,service层也会对数据进行一定的处理,比如条件判断和数据筛选等等;

controller层

最后,是controller层,controller层会调用前面三层,controller层一般会和前台的js文件进行数据的交互, controller层是前台数据的接收器,后台处理好的数据也是通过controller层传递到前台显示的。

②进阶

SpringBoot 分为四层:controller层、service层、dao层、entity层。

entity层

和 model 层一样,存放的是实体类,属性值与数据库值保持一致,实现 setter 和 getter 方法。

dao层

即 mapper层,对数据库进行持久化操作,他的方法使针对数据库操作的,基本上用的就是增删改查,他就是个接口,只有方法名,具体实现在mapper.xml中实现。

service层

业务层,存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供 controller 层调用方法。

controller层

控制层,导入 service层,调用你service方法,controller通过接受前端传来的参数进行业务操作,在返回一个制定的路径或数据表。

③初级

model层

  • model层即数据库实体层,也被称为entity层,pojo层。
  • 一般数据库一张表对应一个实体类,类属性同表字段一一对应。

dao层

  • dao层即数据持久层,也被称为mapper层。
  • dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。

service层

  • service层即业务逻辑层。
  • service层的作用为完成功能设计。
  • service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。

controller层

  • controller层即控制层。
  • controller层的功能为请求和响应控制。
  • controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。

④初级

各模块简介

  • Java

    • bean 实体类,对应数据库中的表(model)

      • 构造方法

      • 属性

      • getter setter

      • toString()

    • dao 持久层 数据库增删改查

    • service 业务层

    • controller 控制层 跳转哪里

    • resources

      • mapper dao实现类
      • applicationContext.xml Spring的配置文
      • db.properties 数据库连接信息
      • log4j.properties 日志配置文件
      • springmvc.xml 配置springmvc
    • webapp

      • jsp等页面
      • web-inf
        • web.xml 加载过滤器 拦截

⑤初级

PO

(persistant object) 持久对象

在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。

DO

(Domain Object)领域对象

就是从现实世界中抽象出来的有形或无形的业务实体。

TO

(Transfer Object) ,数据传输对象

在应用程序不同 tie( 关系 ) 之间传输的对象

DTO

(Data Transfer Object)数据传输对象

这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。

VO

(value object) 值对象

通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由 GC 回收的。

BO

(business object) 业务对象

从业务模型的角度看 , 见 UML 元件领域模型中的领域对象。封装业务逻辑的 java 对象 , 通过调用 DAO 方法 , 结合 PO,VO 进行业务操作。 business object: 业务对象 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 比如一个简历,有教育经历、工作经历、社会关系等等。 我们可以把教育经历对应一个 PO ,工作经历对应一个 PO ,社会关系对应一个 PO 。 建立一个对应简历的 BO 对象处理简历,每个 BO 包含这些 PO 。 这样处理业务逻辑时,我们就可以针对 BO 去处理。

POJO

(plain ordinary java object) 简单无规则 java 对象

纯的传统意义的 java 对象。就是说在一些 Object/Relation Mapping 工具中,能够做到维护数据库表记录的 persisent object 完全是一个符合 Java Bean 规范的纯 Java 对象,没有增加别的属性和方法。我的理解就是最基本的 Java Bean ,只有属性字段及 setter 和 getter 方法!。

DAO

(data access object) 数据访问对象

是一个 sun 的一个标准 j2ee 设计模式, 这个模式中有个接口就是 DAO ,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用, DAO 中包含了各种数据库的操作方法。通过它的方法 , 结合 PO 对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合 VO, 提供数据库的 CRUD 操作.


⑥初级

VO

vo就是我们在web的controller层返回的Object, 在接口中这个VO都会被转成Json对象输出,view object。

DO

DO就是一个业务实体对象

DTO

DTO就是一个复合的DO对象,由于业务需要我们需要调用业务A查询数据得到业务对象A,再调用业务B查询数据得到业务对象B然后一系列封装转化得到复合的对象C此时他就是一个DTO,data transfer object 它是一个服务层和服务层以上之间转换的对象。

PO

po持久化对象 一般放在domain 或者 Entry中是一个与数据库表关联的对象,每一个属性都是表中的一个字段。 当业务过于简单时,po ,do,dto,vo并没有什么区别的时候我们也可以直接复用PO

model = dto

dao = mapper

controller = 除了上面两个所有的


Model是模型一般而言,会有人分的更细,VODTO 等等。我并不推荐分的更细,这个Model常常和持久化的数据一一对应,如Mysql和MongoDB。

Service的概念很大,它的重点是在于提供一个服务。这个服务可能包括一系列的数据处理,也有可能会调用多个Util,或者是调用别的服务。总归一句话,就是,有什么事情,你来找我。

Dao一般而言,都是用来和底层数据库通信,负责对数据库的增删改查。Dao最好都是要独立出来。到现在为止,最佳实践就是一个Service只对应一个Dao。Service会做一些额外的检查,如货物是否损坏,入库单是否完整,等等等等。

SpringBoot 集成MyBatis 中的@MapperScan注解

在SpringBoot中集成MyBatis,可以在mapper接口上添加@Mapper注解,将mapper注入到Spring,但是如果每一给mapper都添加@mapper注解会很麻烦,这时可以使用@MapperScan注解来扫描包。

经测试发现,@MapperScan注解只会扫描包中的接口,不会扫描类,所以可以在包中写Provider类。

@MapperScan(“com.demo.mapper”):扫描指定包中的接口

@MapperScan(“com.demo..mapper”):一个代表任意字符串,但只代表一级包,比如可以扫到com.demo.aaa.mapper,不能扫到com.demo.aaa.bbb.mapper

@MapperScan(“com.demo.**.mapper”):两个*代表任意个包,比如可以扫到com.demo.aaa.mapper,也可以扫到com.demo.aaa.bbb.mapper

可以扫描到跨模块的包

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy