mybatis可以帮我们自动映射字段,在mapper.xml文件中,我们可以不用去写jdbcType来明确指定数据类型,它会自动解析成相对应的java数据类型,每次在使用了mybatis-generator之后,出于强迫症,我还主动将默认生成的jdbcType给去掉了,一直没出过问题,今天却碰到了一个问题:
出问题的业务场景中,需要根据不同的角色查询不同的订单数据,所以我就直接将角色ID当做参数传递进来,由于有多个角色的情况,所以直接将角色ID拼接成字符串,并用逗号分隔开。
mapper接口:
List getOwnAssignedOrderNo(@Param("backendId") String backendId, @Param("role") String role);
mapper文件:
AND w.backend_id = #{backendId}
AND w.workflow_type = 'manual_check'
AND w.backend_id = #{backendId}
AND w.workflow_type = 'phone_check'
AND w.backend_id = #{backendId}
AND (w.workflow_type = 'manual_check' OR w.workflow_type = 'phone_check')
大家注意看我这里的写法,算得上是中规中矩,role参数已经明确指定了string类型,而且在if条件中,我并没有什么特殊的写法,结果却悲剧了:
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.NumberFormatException: For input string: "2,3"<