好的,所以我搜索了这个,而+
和$
将无效。我不想在mybatis select查询中将%
与#search
param连接起来。我想在mybatis XML config not service(Java)...
我有这个查询
<select id="carriersDataTable" parameterType="map" resultType = "carrier">
SELECT
carrierId
name,
prefix,
country,
status,
isdirect as direct
FROM carriers
WHERE name LIKE '%' + #{search} + '%' AND Status != -1 AND IF(''=#{status}, 1, Status = #{status})
ORDER BY name
LIMIT #{startIndex}, #{fetchSize}
</select>
我已经尝试LIKE '%' + #{search} + '%'
和LIKE ${%#{search}%}
两者都不会有效,任何帮助都会受到赞赏......
答案 0 :(得分:2)
试试这个'%' || #{search} || '%'
它会解决你的问题。
答案 1 :(得分:1)
如果你想在sql中保留%,你必须使用$ symbol
'%' + '${search}' + '%'
请记住,使用$ {}将您的查询公开给sql注入,这样您就必须在java代码中正确地转义搜索字符串
答案 2 :(得分:0)
有两个属性-personId和personNickName
personId javaType是java.math.BigInteger,值例如。 123
personNickName javaType是String,值是例如。 'MACK'
因此,在mybatis
中,我需要在查询'123MACK'的where子句中进行串联
Select * From
From PersonTable
Where personUniqueValue = cast(#{personId} as varchar) + #{personNickName}
希望它将对某人有所帮助。
答案 3 :(得分:0)
尝试在数据库中使用内置的字符串连接功能,例如
LIKE CONCAT('%', #{search}, '%')
对于MySQL
答案 4 :(得分:0)
<select id="selectBlogsLike" resultType="Blog">
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
SELECT * FROM BLOG
WHERE title LIKE #{pattern}
</select>