轉(zhuǎn)載請注明出處:http://www.cnblogs.com/Joanna-Yan/p/6878529.html
前面有講到Spring+SpringMVC+MyBatis深入學(xué)習及搭建(三)——MyBatis全局配置文件解析
1. 輸入映射
通過parameterType指定輸入?yún)?shù)的類型,類型可以是簡單類型、hashmap、pojo的包裝類型。
1.1 #{}與${}
#{}實現(xiàn)的是向prepareStatement中的預(yù)處理語句設(shè)置參數(shù)值,sql語句中#{}表示一個占位符即?
<select id="findUserById" parameterType="int" resultType="user"> select * from user where id=#{id}</select>
使用占位符#{}可以有效防止sql注入,在使用時不需要關(guān)系參數(shù)值的類型,mybatis會自動進行java類型和jdbc類型的轉(zhuǎn)換。#{}可以接收簡單類型值或pojo屬性值,如果parameterType傳輸單個類型值,#{}括號可以是value或其它名稱。
${}和#{}不同,通過${}可以將parameterType傳入的內(nèi)容拼接在sql中且不進行jdbc類型轉(zhuǎn)換,${}可以接收簡單類型值或pojo屬性值,如果parameterType傳輸單個簡單類型值,${}括號中只能是value。使用${}不能防止sql注入,但是有時用${}會非常方便,如下例子:
<select id="findUserByName" parameterType="java.lang.String" resultType="joanna.yan.mybatis.entity.User"> select * from user where username LIKE '%${value}%' </select>
如果本例子使用#{}則傳入的字符串中必須要有%,而%是人為拼接在參數(shù)中,顯然有點麻煩,如果采用${}在sql中拼接為%的方式則在調(diào)用mapper接口傳遞參數(shù)就方便很多。
//如果使用占位符號則必須人為在傳參數(shù)中加%List<User> list = userMapper.selectUserByName("%管理員%");
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26