MyBatis使用動態(tài)表或列代碼解析
有時候會不可避免使用動態(tài)表或者列進行業(yè)務處理。下面學習幾種動態(tài)表/列的使用方式:
【1】使用預編譯
即,默認值。
<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=? 這樣使用”?”作為占位符的語句,然后進行參數(shù)解析。
【2】使用非預編譯
<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}' 格式,這樣會對參數(shù)進行數(shù)據(jù)類型轉(zhuǎn)換,有助于mysql查詢時提升性能。
【3】仍舊使用非預編譯
<select id="hisNumber" parameterType="hashmap" resultType="hashmap" statementType="STATEMENT" > select number from ${oldTableName} <!--這里使用"$"!!!--> where name=${name} and date = ${date} <select>
注意后面name和date的取值,使用了${name} 格式,將會直接取參數(shù)值,不進行數(shù)據(jù)類型轉(zhuǎn)換。當參數(shù)為數(shù)值類型且格式如“00124”時,將會出現(xiàn)數(shù)據(jù)錯讀(會將0124、124等都讀出來)。
故建議使用第一種方式??!
總結(jié)
以上就是本文關(guān)于MyBatis使用動態(tài)表或列代碼解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
SpringBoot整合MyBatisPlus配置動態(tài)數(shù)據(jù)源的方法
這篇文章主要介紹了SpringBoot整合MyBatisPlus配置動態(tài)數(shù)據(jù)源的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05mybatis中 if-test 數(shù)字判斷的坑及解決
這篇文章主要介紹了mybatis中 if-test 數(shù)字判斷的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06解決springboot自定義配置Boolean屬性不能生效的問題
這篇文章主要介紹了解決springboot自定義配置Boolean屬性不能生效的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05