mybatis 明明sql语句没问题,但是select 语句接收不到对应的值#{}值
场景回顾
之前再给公司修改一个搜索的接口,之前这个接口是没得任何问题的:
<select id="findAllResultByString" parameterType="java.lang.String" resultType="com.newtouch.dangjian.entity.party.SearchResultVo">
-- type:
-- 1 活动
-- 2 报告
-- 3文章
SELECT id,content, IFNULL(update_datetime,create_time) as date,1 as type
FROM dj_activity
WHERE CONCAT(content,IFNULL(attachs,'')) like CONCAT('%', #{title},'%') AND deleted='N' union all
SELECT id,content, IFNULL(update_time,create_time) as date,2 as type
FROM dj_activity_report
WHERE CONCAT(content,IFNULL(attachs,'')) like CONCAT('%', #{title},'%') AND deleted='N' union all
SELECT id,title as content,IFNULL(update_datetime,create_datetime) as date,3 as type
FROM dj_article u
WHERE CONCAT(u.short_title,u.title,u.topic,u.keyword) like CONCAT('%',#{title},'%') AND u.deleted='N'
ORDER BY date DESC
</select>
运行ok 没问题。现在我想把前面的两个select语句不要了,注释掉
奇迹出现了,
后台500报错:
Preparing: SELECT count(0) FROM dj_article u WHERE CONCAT(u.short_title, u.title, u.topic, u.keyword) LIKE CONCAT(’%’, ?, ‘%’) AND u.deleted = ‘N’
意思是参数无法识别,我一直反复调试,确认参数是没有问题,取消注释前面两条sql又没问题,#{titile}为什么会识别不了值呢?
我又把问题带到了xml里面的jdbc指定类型 加上#{titile,jdbcType=VARCHAR}依然识别不了参数;我更改dao辰的参数名称,还是识别不了,但是我相信问题肯定是处在xml某处。
在百度畅游了两个小时无果,我仔仔细细阅读xml每一行代码:
<select id="findAllResultByString" parameterType="java.lang.String" resultType="com.newtouch.dangjian.entity.party.SearchResultVo">
-- type:
-- 1 活动
-- 2 报告
-- 3文章
-- SELECT id,content, IFNULL(update_datetime,create_time) as date,1 as type
-- FROM dj_activity
-- WHERE CONCAT(content,IFNULL(attachs,'')) like CONCAT('%', #{title},'%') AND deleted='N' union all
-- SELECT id,content, IFNULL(update_time,create_time) as date,2 as type
-- FROM dj_activity_report
-- WHERE CONCAT(content,IFNULL(attachs,'')) like CONCAT('%', #{title},'%') AND deleted='N' union all
SELECT id,title as content,IFNULL(update_datetime,create_datetime) as date,3 as type
FROM dj_article u
WHERE CONCAT(u.short_title,u.title,u.topic,u.keyword) like CONCAT('%',#{title},'%') AND u.deleted='N'
ORDER BY date DESC
</select>
由于注释行看着碍眼 我就把他们删了 再运行了一边项目,居然奇迹识别了!!
mybatis标签不能添加注释内容,会导致编译问题,虽然通过了编译,但是在后续的使用中出错!