有時候會不可避免使用動態表或者列進行業務處理。下面學習幾種動態表/列的使用方式:
【1】使用預編譯
即,默認值。
1
2
3
4
5
6
|
< select id = "hisNumber" parameterType = "hashmap" resultType = "hashmap" > select number from ${oldTableName} <!--這里使用"$"!!!--> where name=#{name} and date = #{date} <!--這里使用"#"--> < select > |
預編譯,即首先會生成select number from ? where name=? and date=? 這樣使用”?”作為占位符的語句,然后進行參數解析。
【2】使用非預編譯
1
2
3
4
5
|
< select id = "hisNumber" parameterType = "hashmap" resultType = "hashmap" statementType = "STATEMENT" > select number from ${oldTableName} <!--這里使用"$"!!!--> where name='${name,jdbcType=VARCHAR}' and date = '${date,jdbcType=TIMESTAMP}' < select > |
注意后面name和date的取值,使用了'${name}' 格式,這樣會對參數進行數據類型轉換,有助于mysql查詢時提升性能。
【3】仍舊使用非預編譯
1
2
3
4
5
|
< select id = "hisNumber" parameterType = "hashmap" resultType = "hashmap" statementType = "STATEMENT" > select number from ${oldTableName} <!--這里使用"$"!!!--> where name=${name} and date = ${date} < select > |
注意后面name和date的取值,使用了${name} 格式,將會直接取參數值,不進行數據類型轉換。當參數為數值類型且格式如“00124”時,將會出現數據錯讀(會將0124、124等都讀出來)。
故建議使用第一種方式!!
總結
以上就是本文關于MyBatis使用動態表或列代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/j080624/article/details/70196848