一直使用mvc定义好的参数类型 , 使用自定义参数类型进行参数赋值操作 , 因为最近项目使用的前端组件刚好返回的值是utc格式的 , 所以利用自定义解析器解析参数并用于项目中
1 解析器
HandlerMethodArgumentResolverComposite 继承 HandlerMethodArgumentResolver(参数解析器) , 在打断点的过程中 , 本项目该类注册的解析器有36个 , 一般初始化有26个 , 所以我们只需要将想要的解析器注册进去就可以了
1 |
|
2 定义解析器
2.1 自定义注解
为了使该解析器与其他方法区分开来 , 这边定制了一个注解 , 其中有一个参数类型为date , 需要在定制一个注解便于反射时取值
1 | /** |
2.2 自定义解析器
参数的解析是基于HandlerMethodArgumentResolver实现的 , 为此通过继承这个实体类RequestResponseBodyMethodProcessor,重写其中的support逻辑 , 就可以完成想要的参数设置 , 这里的utc解析 , 我查的是一段时间内的财务账单 , 为此只需要截取字段并转化为时间即可
1 | ** |
2.3 注册解析器
1 | /** |
3 其他
- 在使用该时间查询的时候 , 发现mybits-plus 对于 gt;= 或者 lt;= 无法解析 , 所以需要换另外一种
1
2
3
4
5
6<if test="wcSiteBillParam.billStartDate !=null">
and sb.create_time <![CDATA[ >= ]]> '${wcSiteBillParam.billStartDate}'
</if>
<if test="wcSiteBillParam.billEndDate !=null">
and sb.create_time <![CDATA[ < ]]> '${wcSiteBillParam.billEndDate}'
</if> - myBits 对于时间的映射查询只能使用 ‘${xxxx}’ , 使用 #{} 会导致变成占位符无法解析 , ‘#{}’ 也是一样报错