一、场景
我们在使用API时请求参数经常会有非必填参数,此时该参数应该是没有传参的,如果我们希望当这个参数没有传参时,给该参数赋值'null'字符串,该如何做?
比如说我们希望从一个订单表中查到某一个客户的订单,如果订单id字段(crt_ord_id)有传参,那就查看这个客户的这个订单,如果订单id字段(crt_ord_id)没有传参,就找到这个客户所有没有订单id的订单(有问题的订单)该如何操作?
这里我们假设直接从上游数据库中进行查询(在数据服务模块以【直连数据源-SQL模块】为例),并以MySQL为例
二、解决方案及功能
我们以【直连数据源-SQL模式】中的高级SQL来实现,高级SQL支持Mybatis语法(目前仅支持<if></if>、<choose></choose>、<when></when>、<otherwise></otherwise>、<trim></trim>、<foreach></foreach>、<where></where>标签),可以使用Mybatis-SQL实现该场景,注意区分java null 和"null"字符串的区别
②点击【SQL试运行】,并填写【试运行输入值】可以进行试运行,这里我在请求参数处,将crt_ord_id和buyer_id都设为非必填,所以【试运行输入值】两个都可以不同填
③在【返回结果】处可以看到返回状态码
④在【试运行日志】可以看到Execute SQL和Source SQL,对比两个SQL,我们会发现crt_ord_id被赋值为'null'字符串,而buyer_id没有传参,该参数被忽略
综上,如果某请求参数设置不必填,那么就没有传参,如果希望没有传参的时候,这个参数值为字符串'null',可以利用高级SQL的Mybatis-SQL实现