
資料內(nèi)容:
3. #{}和${}的區(qū)別是什么? 
#{}是預(yù)編譯處理,${}是字符串替換。 
Mybatis在處理#{}時(shí),會(huì)將sql中的#{}替換為?號(hào),調(diào)用PreparedStatement的set方法來賦值; 
Mybatis在處理${}時(shí),就是把${}替換成變量的值。 
使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性。
#{} 的變量替換是在DBMS 中;${} 的變量替換是在 DBMS 外 。
4.當(dāng)實(shí)體類中的屬性名和表中的字段名不一樣 , 
怎么辦 ? 
第1種: 通過在查詢的sql語(yǔ)句中定義字段名的別名,讓字段名的別名和實(shí)體類的屬性名一致。 
<select id="selectorder" parametertype="int" resultetype="me.gacl.domain.order"> 
select order_id id, order_no orderno ,order_price price form orders where 
order_id=#{id}; 
</select> 
第2種: 通過來映射字段名和實(shí)體類屬性名的一一對(duì)應(yīng)的關(guān)系。 
<select id="getOrder" parameterType="int" resultMap="orderresultmap"> 
select * from orders where order_id=#{id} 
</select> 
<resultMap type="me.gacl.domain.order" id="orderresultmap"> 
<!–用id屬性來映射主鍵字段–> 
<id property="id" column="order_id"> 
<!–用result屬性來映射非主鍵字段,property為實(shí)體類屬性名,column為數(shù)據(jù)表中的屬性–> 
<result property="orderno" column ="order_no"/> 
<result property="price" column="order_price" /> 
</reslutMap> 
 
                