场景
在使用API时,请求参数中常会存在非必填参数,此时该参数应没有传参。若希望当该参数没有传参时,给该参数赋值null字符串,应如何处理?
例如,希望从订单表中查询指定客户的订单时,如果订单ID字段(crt_ord_id)已传入参数,则应查看该客户的对应订单;如果订单ID字段(crt_ord_id)未传入参数,则应查找该客户所有没有订单ID的订单(即有问题的订单)。
现在假设直接从上游数据库中进行查询(在数据服务模块以直连数据源-SQL模块为例),并以MySQL为例。
解决方案及功能
可使用高级SQL的Mybatis-SQL实现。
前往服务 > API开发中选择直连数据源-SQL模块方式新建API,其中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没有传参,该参数被忽略。
该文章对您有帮助吗?