◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处: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