轉(zhuǎn)載請(qǐng)注明出處:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 

前面有講到Spring+SpringMVC+MyBatis深入學(xué)習(xí)及搭建(三)——MyBatis全局配置文件解析

1. 輸入映射

通過(guò)parameterType指定輸入?yún)?shù)的類型,類型可以是簡(jiǎn)單類型、hashmap、pojo的包裝類型。

1.1 #{}與${}

#{}實(shí)現(xiàn)的是向prepareStatement中的預(yù)處理語(yǔ)句設(shè)置參數(shù)值,sql語(yǔ)句中#{}表示一個(gè)占位符即?

<select id="findUserById" parameterType="int" resultType="user">
   select * from user where id=#{id}</select>

使用占位符#{}可以有效防止sql注入,在使用時(shí)不需要關(guān)系參數(shù)值的類型,mybatis會(huì)自動(dòng)進(jìn)行java類型和jdbc類型的轉(zhuǎn)換。#{}可以接收簡(jiǎn)單類型值或pojo屬性值,如果parameterType傳輸單個(gè)類型值,#{}括號(hào)可以是value或其它名稱。

${}和#{}不同,通過(guò)${}可以將parameterType傳入的內(nèi)容拼接在sql中且不進(jìn)行jdbc類型轉(zhuǎn)換,${}可以接收簡(jiǎn)單類型值或pojo屬性值,如果parameterType傳輸單個(gè)簡(jiǎn)單類型值,${}括號(hào)中只能是value。使用${}不能防止sql注入,但是有時(shí)用${}會(huì)非常方便,如下例子:

    <select id="findUserByName" parameterType="java.lang.String" resultType="joanna.yan.mybatis.entity.User">
        select * from user where username LIKE '%${value}%'    </select>

如果本例子使用#{}則傳入的字符串中必須要有%,而%是人為拼接在參數(shù)中,顯然有點(diǎn)麻煩,如果采用${}在sql中拼接為%的方式則在調(diào)用mapper接口傳遞參數(shù)就方便很多。

//如果使用占位符號(hào)則必須人為在傳參數(shù)中加%List<User> list = userMapper.selectUserByName("%管理員%");
        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式