在xml映射文件中可以使用like进行模糊查询,但是需要注意的是like的使用规范和在xml文件中占位符的使用注意事项。
#{}是在xml文件中常用的占位符,
1.错误示范
首先是###错误###的like模糊查询示例
<select id="tesrtId" parameterType="java.lang.String" resultMap="ListResultMap">
SELECT
<include refid="ListQueryFields" />
FROM
test t
WHERE
t.code like "#{code}%"
ORDER BY
code ASC
</select>
<sql id="ListQueryFields">
<if test="true">
code
</if>
</sql>
<resultMap id="ListResultMap" type="com.example.pojo.vo.TestVo">
<result column="code" property="code"/>
</resultMap>
这个会报错:java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
2.正确示范
正确的应该吧#{}放到双引号外面
<select id="tesrtId" parameterType="java.lang.String" resultMap="ListResultMap">
SELECT
<include refid="ListQueryFields" />
FROM
test t
WHERE
t.code like #{code}"%"
ORDER BY
code ASC
</select>
3.concat实现
采用concat拼接的方式实现like模糊查询
<select id="getInfo" parameterType="java.lang.String" resultType="java.lang.Long">
SELECT id
FROM t
WHERE Code like concat("%",#{code}, "%" )
group by id
limit 1
</select>