最近在重构老的代码,在写的过程中发现之前的逻辑如果遇到没有入参pageNo会Npe,于是乎我想找找公司项目有啥方式处理page入参的有两种如下
- 使用三元表达式直接判断是否null,然后赋值
- 使用mapStruct赋值初始化AO
但是我感觉这两种都有点麻烦,我想的要是随用随生成初始化的page参数就好了,于是有了以下设计
新建个BaseDTO用来被继承
@Data
public class BasePageDTO {
private Integer pageNo;
private Integer pageSize;
}
再把你的dto继承这个BaseDTO,因为代码规范规定不能在bean里面直接赋值属性的默认值,所以我们的dto在继承BasePageDTO后需要经过一步加工,我新建了一个PageUtil工具类,代码如下
@Component
public class PageUtil {
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">buildPage</span><span class="token punctuation">(</span><span class="token class-name">BasePageDTO</span> pageDTO<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token class-name">Objects</span><span class="token punctuation">.</span><span class="token function">isNull</span><span class="token punctuation">(</span>pageDTO<span class="token punctuation">.</span><span class="token function">getPageNo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
pageDTO<span class="token punctuation">.</span><span class="token function">setPageNo</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token class-name">Objects</span><span class="token punctuation">.</span><span class="token function">isNull</span><span class="token punctuation">(</span>pageDTO<span class="token punctuation">.</span><span class="token function">getPageSize</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
pageDTO<span class="token punctuation">.</span><span class="token function">setPageSize</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
}
最后在我需要初始化page参数时候直接调用下这个方法,page参数就好啦

