web开发中的POVO小套路

工作时间快有一年了,现在做web开发。发现了一套前后端分离开发的小套路,这里总结一下。

数据映射

在数据这方面,需要底层数据支持,一般存放在关系型数据库中方便查询。所以在代码中需要有Bean能够一对一映射到数据表结构,这里对于数据表结构与代码中的Bean应当是强一致的。我们对这种Bean叫做PO(Persistent Object):持久化对象

数据取得

我们查询的数据可能不止PO本身,可能还包含基于数据表结构本身生成的额外的数据,例如count出来的数据等等。所以,需要一个DO(Domain Object):领域对象,去专门存储这些业务上需要的数据,我们不想再写一次Bean去封装数据表结构,所以可以直接让DO继承PO,形成POVO。即POVO包含了数据表结构本身的数据结构,还包含了另行生成的业务需要的数据结构。

数据转化

POVO的数据是SQL直接取得的,一般情况下,SQL取得的数据已经是可以展示的。但在有些时候,这些数据可能还得再处理,例如:我们取24小时的分小时数据,然后需要求得24小时的数据的占比情况。

这个时候,我的做法是写一个仅与该POVO相关工具类,包含一些能够把SQL转化来的POVO再次处理的静态方法。向上边的例子,我们取得了24条分小时的数据,在这个静态方法中,对24条数据求总,再分别给每条数据的占比字段设置上(数据/总数据)。

数据展示

一条SQL只能取得一个结果集,有时候项目中希望一次请求拿到多个结果集,这时候就需要VO(View Object):视图对象。我们设置一个VO,其属性包含多个经过静态方法转化过POVO结果集。这样,就做到了一个VO返回多个SQL取得的结果集了。

前端渲染

说了这么多,数据还只是一个后端方便前端展示的数据。接下来就需要前端获取这些数据并渲染了。目前流行的就是ajax和fetch两种请求,不管哪种请求,拿到的数据最好是json格式的,springmvc中在conroller方法上加上@ResponseBody,方法返回参数设置为VO类型,这样就可以返回json数据了。采用一些数据绑定的手段,可以将数据轻轻松松的绑定到页面的DOM元素上。目前,我采用的是vuejs。

总结

以上的开发套路让我的开发工作量减少不少,这样做的好处在于可以不用管底层数据/数据表是否准备好,可以先期开发数据转化、数据展示和前端渲染,数据的来源取自Mock即可。等真正的数据产生后,把来自Mock的数据转接自真正数据源就好了。

以上都是一家之言,一点小小的思考,希望对大家能有一些帮助。