Guns第八节MAP+WARPPER详解

下面介绍一下guns controller层map+warpper的访问方式。

Guns第八节MAP+WARPPER详解

首先说一下这个map,map就是把controller层的访问结果转化成map.然后warpper就是把这个map进行一次包装,可以往里面加一些字段,可以修改一些字段,也可以删除一些字段,这样做有什么好处呢?举个例子,比如说现在controller层返回一个user对象,然后这个对象里面有三个字段Guns第八节MAP+WARPPER详解,并且sex是一个数字,比如说 1 男或者 2女.因为往往我们插入数据库之后,数据库里面记载的字段是一个数字。所以说返回结果可能是一个数字 1 或者 2.

然后为什么要用map呢,设想一下,假设用map返回的话,我们是不是可以在这些属性里面任意添加其他的属性Guns第八节MAP+WARPPER详解,比如说添加一个sexName,把这个 1 或者 2 转化成文字形式Guns第八节MAP+WARPPER详解,这样的形式有什么好处呢,减少了跟前端交互的成本,比如说你直接返回一个user,你必须告诉前段工程师 1是男,2 是女。 但是如果我们在查出Guns第八节MAP+WARPPER详解之后,自己返回了一个Guns第八节MAP+WARPPER详解,直接把sex转化成文字Guns第八节MAP+WARPPER详解,这样就减少了跟前端交互的成本。然后Map还可以很方便的扩张一些其他的字段,比如说Guns第八节MAP+WARPPER详解,只需要Guns第八节MAP+WARPPER详解就行了。如果你返回的是一个user对象,你肯定不可能动态的拓展其他的字段Guns第八节MAP+WARPPER详解,你必须修改源代码,修改user对象的代码,而map的话,你直接map.put()就可以了,这样子的好处就是可维护性高,

比如说某一个controller它某一天想加一个字段,你不需要改变user的代码,你只需要在map里面增加一个字段或者修改某个字段Guns第八节MAP+WARPPER详解,这样就不容易出现错误。

然后看一下他的原理Guns第八节MAP+WARPPER详解

Guns第八节MAP+WARPPER详解

Guns第八节MAP+WARPPER详解这个object存的就是Map对象或者list对象Guns第八节MAP+WARPPER详解,他有一个构造函数,构造函数需要把Object对象传过来。然后有一个warpper方法,首先判断他是一个list还是一个mapGuns第八节MAP+WARPPER详解,如果是list的话,循环遍历这个list,把这个map对象分别包装了一下,包装就是这个方法,Guns第八节MAP+WARPPER详解,如果是map对象,就直接包装一下map对象,之后返回这个被包装之后的这个对象。这个Guns第八节MAP+WARPPER详解需要子类去实例化它的,需要子类重写它的,这个子类就是需要包装哪些对象,比如说user里面有个sex,还需要在user里面写其他的字段都是在这个方法Guns第八节MAP+WARPPER详解里面重写它的内容。

Guns第八节MAP+WARPPER详解,通过BaseControllerWarpper类的子类介绍一下warpper类有什么作用Guns第八节MAP+WARPPER详解

Guns第八节MAP+WARPPER详解初始化的时候需要传一个对象,然后重写warpTheMap,这个mapGuns第八节MAP+WARPPER详解就是原有的返回结果。这个Guns第八节MAP+WARPPER详解里面的内容就是包装的过程,最后把它包装成一个什么样的结果。大家可以看到取出来一个pid,pid就是一个部门列表的父id,就是把上级部门的id取出来,然后判断是不是为空,如果为空的话,我们把父级部门的名称pName改成--。如果不是的话,取出这个父级名称,通过这个父级id(pid)取出这个父级名称。大家可以看到直接把pid改成了文字名称Guns第八节MAP+WARPPER详解,这样就方便把数字的内容改成文字的内容,直接告诉前段,它的父级名称是什么?Guns第八节MAP+WARPPER详解

这个父级名称没有显示出来,大家可以看到json,json是经过包装了的,最顶级的公司的父级名称是“--”,大家可以看到Guns第八节MAP+WARPPER详解,在没有父级id的情况下,很方便的将父级名称变成"--"。有父级id的情况下,通过父级id(pid)得到父级名称。

比如说字典的包装类Guns第八节MAP+WARPPER详解,首先获取到字典的idGuns第八节MAP+WARPPER详解,然后通过字典的id找到下标所有的字典,这是什么意思呢。

比如说状态这个字典Guns第八节MAP+WARPPER详解,状态只是一个名称,它的值都有哪些?他是通过id,pid是16的话,他就会找到这个字典的这几条Guns第八节MAP+WARPPER详解,找到pid是16的这两条记录,他就是状态对应的枚举,是启用还是禁用。找到字典之后,遍历这个字典,Guns第八节MAP+WARPPER详解,把字典的序号和字典的名称通过";"":"连接起来。

Guns第八节MAP+WARPPER详解

如果不作包装的话,你需要返回给前台,number还有名称就需要前台包装了,

前端进行包装,当你进行修改的时候,比如说样式不是这样了,你就需要告诉前端通过那些字段在前端组装这些东西。但是如果你后端控制的话,你可以直接写这样一个warpper类Guns第八节MAP+WARPPER详解而不用告诉前端,减少了一个交流的成本,并且把这些内容的显示权限Guns第八节MAP+WARPPER详解都交给后端处理。由后端来控制,这样比较好控制.

日志报表的一个包装类Guns第八节MAP+WARPPER详解,其实这个作用就是把massage进行了一个包装。

Guns第八节MAP+WARPPER详解Guns第八节MAP+WARPPER详解是一个用户id

Controller类怎么写

Guns第八节MAP+WARPPER详解

如果你要包装已有的业务的一个对象返回形式不是map而是普通的,你可以这样做Guns第八节MAP+WARPPER详解

你写的这个包装类必须是Guns第八节MAP+WARPPER详解,如果是其他的话,他会不做处理。

Guns第八节MAP+WARPPER详解把数字信息转化为文字信息,Guns第八节MAP+WARPPER详解是单例的,每次调用通过这个Guns第八节MAP+WARPPER详解,它是在spring容器中的.

大家知道如果想调用springbean的话,一种形式就是注入,Guns第八节MAP+WARPPER详解但是如果它不是spring容器里面的对象,就不能用这种方式,可以通过Guns第八节MAP+WARPPER详解,拿到这个context,context可以直接get这个beanGuns第八节MAP+WARPPER详解,就可以直接用静态方法调用的方式调用这个spring容器中的bean,ConstantFactory就是通过这种方式

Guns第八节MAP+WARPPER详解,它每次调用的时候通过这个me()方法,调用这个getBean。从而可以使用这些方法

Guns第八节MAP+WARPPER详解

基本上是通过数字的id得到它相应的名称,这个类用起来非常方便,基本上是通过这个Guns第八节MAP+WARPPER详解

可以看到这个是静态方法Guns第八节MAP+WARPPER详解,直接这个里面有些可以直接操作数据库的Guns第八节MAP+WARPPER详解,直接操作dict,直接从字典里面得到这个性别。这些就是constantfactory的作用。

相关文章:

  • 2021-05-04
  • 2022-02-28
  • 2022-12-23
  • 2021-10-23
  • 2021-10-04
  • 2021-10-24
  • 2021-10-12
  • 2021-11-12
猜你喜欢
  • 2021-08-12
  • 2021-07-10
  • 2021-09-13
  • 2021-11-18
  • 2021-09-26
  • 2021-06-08
  • 2021-09-23
相关资源
相似解决方案