zoukankan      html  css  js  c++  java
  • SpingBoot三——基础架构

      ◆版权声明:本文出自胖喵~的博客,转载必须注明出处。

      转载请注明出处:https://www.cnblogs.com/by-dream/p/10492073.html 

    继续上一节,为了更好的开发,现将各个层独立,各司其职。

    这里,一共划分了四大块:Controller层、Service层、Dal层和Common。

    Common层 

    提供一些公用的能力,一个一个看,首先是util:

    BaseQuery 所有Query的父类,里面的pageSize和pageNum是分页请求用的,这里面多写了getStart的getSize两个方法是因为在mybatis的请求中,这两个字段会作为参数进行查询的。

        <!-- 分页查 -->
        <select id="getPageByQuery" parameterType="com.bryan.demo.common.query.UserQuery" resultMap="userMap">
            select
            <include refid="columns" />
            from user
            <include refid="queryParams" />
            order by id
            <if test="size!=null">
                <![CDATA[limit #{start}, #{size}]]>
            </if>
        </select>

    这里就是分页请求的原理,前端在请求的时候,只需带上pageSize和pageNum两个参数就可以了。

    Page:分页请求的结果类,里面存储着请求分页时候的参数,以及所有的数量和当前页返回的body数据。

    Result:结果类,success代表本次请求是否成功,data定义的是一个模版,所以不同的请求结果数据都可以放到这里。

    Query:各个功能的Query类,需要继承BaseQuery,然后定义自己功能的字段即可。

    Dal层

    负责处理数据相关的逻辑。

    entity中DO代表数据库字段类,需要和数据库中的字段保持一致,它也是Dal层返回的数据类型;

    dao下的mapper,定义了一些对数据库操作的方法,类似于定义接口,真实的实现在resource目录下的mapper.xml中,这里用的是mybatis。

    Service层

    service类:接口,定义对外提供的接口;

    serviceImpl类:接口的实现类,Autowire Mapper,然后用mapper对象操作数据库对象,因为mapper对象处理的是DO对象,而它对外提供和接受的都是BO对象,因此需要helper类

    helper类:负责DO对象和BO对象的转化,

    以及请求参数中jsonString的转化;
    BO类:业务的数据对象

    Controller层

    RequestMapping决定url进入哪个方法。

    Autowire Service后直接调用Service对象,返回结果封装为Result结果进行输出。

    画了一副整体的图,可以看下,方便理解:

     当然,最好的是看代码:https://github.com/bryanfeng/springboot-demo/commit/3e788c218ae3c4ffd90a38cb84f4d24ee42d374f

  • 相关阅读:
    为什么 execute(`echo 中文`) 输出中文源码?
    使用图片跨域方式获取图片数据 使用 jsonp 方式跨域获取数据
    js 中的 sleep 方法, 阻塞式
    大数据存储单位介绍(TB、PB、EB、ZB、YB有多大)
    在 chrome 开发工具中使用终端
    作为一个代码搬运工,如何应对突如其来的灵魂拷问『你今天做了什么』?
    JVM相关
    python和C++联合调试
    Google protobuf解析消息逻辑的版本问题
    卷积转换为矩阵运算中填充数的计算-GEMM
  • 原文地址:https://www.cnblogs.com/by-dream/p/10492073.html
Copyright © 2011-2022 走看看