java ssm框架 mapper文件里的#符號和$符號的區別


Java SSM框架里面,Mapper.xml文件

(一)#符號生成的sql語句是作為傳參的

<!-- 獲得數據列表(包括課程相關信息) -->
  <select id="GetListByUidAndType" resultMap="BaseResultMap" parameterType="Map">  
    select
    <include refid="Base_Column_List" />
    from my_favorites
    where uid=#{uid} and type=#{type}
    <if test="strWhere !=''">
        and #{strWhere}
    </if>    
    <if test="filedOrder!=''">
        order by #{filedOrder}
    </if>        
    limit #{page.startPos},#{page.pageSize}
  </select>

 

DEBUG - ==>  Preparing: select nid, uid, title,brief, key_value, type, addtime from my_favorites where uid=? and type=? order by ? limit ?,? 
DEBUG - ==> Parameters: 1(String), 1(Integer), addtime desc(String), 0(Integer), 10(Integer)

 

(二)而$符號生成的sql語句是作為占位符顯示的

 <!-- 獲得數據列表(包括課程相關信息) -->
  <select id="GetListByUidAndType" resultMap="BaseResultMap" parameterType="Map">  
    select
    <include refid="Base_Column_List" />
    from my_favorites
    where uid=${uid} and type=${type}
    <if test="strWhere !=''">
        and ${strWhere}
    </if>    
    <if test="filedOrder!=''">
        order by ${filedOrder}
    </if>        
    limit ${page.startPos},${page.pageSize}
  </select>

 

DEBUG - ==>  Preparing: select nid, uid, title,brief, key_value, type, addtime from my_favorites where uid=1 and type=1 order by addtime desc limit 0,10 
DEBUG - ==> Parameters:

 

 (三)需要注意的是:當strWhere為拼接sql語句字符串時,如status=1,這時候使用#號會查不出結果,必須使用$號作為變量

<select id="GetRecordCount" resultType="java.lang.Integer" parameterType="Map">
        select count(*) from course_books
        <if test="strWhere !=''">
            where ${strWhere}
        </if>
        <if test="filedOrder!=''">
            order by #{filedOrder}
        </if>
</select>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM