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

