错误sql:<select id="getInfoList" parameterType="java.lang.String" resultMap="ebikeInfoMap"> <include refid="selectAll"/> from hm_virtual_devices_info <where>vehicle_version like %#{vehicleVersion, jdbcType=VARCHAR}% and status=0</where> order by id </select>
执行时报错:
显然,是字符串的引号问题,
正常sql是:like ‘%H1%’ xxx,而mapper里的sql变成了 like %‘H1’% xxx。
因此需要使用字符串的拼接方式:
方法一:
<select id="getInfoList" parameterType="java.lang.String" resultMap="ebikeInfoMap">
<include refid="selectAll"/>
from hm_virtual_devices_info
<where>vehicle_version like concat('%',#{vehicleVersion, jdbcType=VARCHAR},'%') and status=0</where>
order by id
</select>
MySQL的CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一
方法二:
或者使用mybatis的bind,但是需要在dao接口加@Param,否则会抛无法get参数的问题
建议使用concat方法