1.动态查询语句
2.SQL中占位符不能在单引号中,否则,会以?进行查询数据
'%#{param}%'
'%?%'
3.SQL中不能使用加号进行字符串拼接,加号是用来做运算的
'%'+'D'+'%'
4.MyBatis进行拼串,拼串会出现 SQL 注入情况 ,例如:“or 1=1”
'%${param}%'
5.使用内置方法进行拼串
concat('%',#{param},'%')
6.查询条件值本身为%,查询出所有的数据
concat('%',#{param},'%') => '%%%'
'%\%%' 使用转译字符再进行查询。
7.#和\是一个意思,表示转译。使用#代替\
select * from t_user where username like '%#%%' escape '#'
select * from t_user where loginacct like '%@%%' escape '@'
SELECT * FROM t_user WHERE loginacct LIKE concat('%','@%','%') ESCAPE '@'
8.常见的SQL文,在Oracle中,使用两个竖线用来表示字符串拼接,MySQL中没有这样的语法。
select * from t_user where username like '%'|| #{param} ||'%'
- SQL参数问题
<select id="queryCount" resultType="int"> select count(*) from t_user <where> <if test="queryText!=null"> |