背景
业务需求是根据批量手机号查询用户信息。 因此入参应该是
List<String>;
根据多个手机号批量查询用户,应该是一个很简单的需求。
<select id="queryUsersByMobileList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from t_user
where
user_type = 1
and deleted = 0
and mobile in
<foreach collection="mobiles" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
但是单元测试的时候OK,发到FAT就报错。
原因
之前接入了一个KMS服务,加密手机号,但是没有批量加密的服务,导致报错。
排查方式:
1。单元测试,如果单元测试没问题,说明你的代码是没有问题的,SQL语法,java逻辑,都没有问题。 如果第一步就报错了,就慢慢debug排查吧。 2.联调。单元测试ok,但是联调出问题,可以通过监控组件,如OWL、Hlog等工具查看错误原因。在此不再赘述,若有问题可留言。 这时候如果sql有问题,你可以把sql写死,比如就查某一条/某几条数据,直接写死在xml。 1)如果不报错,说明你之前写的sql 有问题,可能多了某个空格,或者括号,仔细检查一下,或者重新写一遍。 2)如果写死还报错,说明启动的FAT环境服务有问题,就不是代码的问题了(因为你肯定本地测试过一遍,而且本地测没问题。)
|