【聲明:】本文是作者(蘑菇v5)原創(chuàng),版權(quán)歸作者 蘑菇v5所有走触,侵權(quán)必究晦譬。本文首發(fā)在簡書。如若轉(zhuǎn)發(fā)互广,請注明作者和來源地址敛腌!未經(jīng)授權(quán),嚴(yán)禁私自轉(zhuǎn)載惫皱!
引用:
1像樊、#{xxx}
這種方式會自動將這個值替換為PreparedStatment
中?
來使用,如果是字符串會自動加上引號旅敷,對于排序而言就無法操作
2生棍、${xx}
這種方式叫做完全替換,直接將字符串完整的替換到這個位置媳谁,完全替換的方式可能會出現(xiàn)SQL
注入的安全隱患涂滴。建議在參數(shù)中不要使用這種方式。但是如果使用在排序中沒有任何影響
<!-- #{sx}會使用?進(jìn)行替代 晴音,$(xx)會完整將字符串完成替代-->
<select id="find" resultType="User" parameterType="map">
select * from t_user
<!-- 動態(tài)SQL -->
<where>
<if test="name!=null"> (username like #{name} or
nickname like #{name})</if>
<if test="type!=null"> and type=#{type}</if>
</where>
<if test="sort!=null">
order by ${sort}
<if test="order!=null">
${order}
</if>
<!-- <choose>
<when test="order!=null">${order}</when>
<otherwise>asc</otherwise>
</choose> -->
</if>
limit #{pageOffset},#{pageSize}
</select>
<select id="find_count" parameterType="map" resultType="int">
select count(*) from t_user
<if test="name!=null">where (username like #{name} or
nickname like #{name})</if>
</select>
動態(tài) SQL:
根據(jù)不同條件拼接SQL
語句柔纵,經(jīng)常出問題,動態(tài)SQL
解決此問題段多。