报错信息为:
### Cause: java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
出错的SQL语句为:
SELECT count(DISTINCT order_id)
FROM t_lm_seckill_pool
WHERE LOCATE('"gongjijin":"有"',info) > 0 AND
( LOCATE(CONCAT('"zhiye":','"',?,'"'),info) > 0
or LOCATE(CONCAT('"zhiye":','"',?,'"'),info) > 0 ) AND
LOCATE('"gongzixingshi":?',info) > 0 AND
sold_state = 0
仔细查看sql语句,出错点在于LOCATE('"gongzixingshi":?',info) > 0。
对应在xml文件中的实现为
LOCATE('"gongzixingshi":#{gongzixingshi,jdbcType=VARCHAR}',info) > 0
要实现的功能是查询"gongzixingshi":"银行转账"在info字段中是否被包含,
改为:LOCATE(CONCAT('"gongzixingshi":','"',#{gongzixingshi},'"'),info) > 0 即可。
网友评论