mybatis多個接口參數(shù)的注解使用方式(@Param)_第1頁
mybatis多個接口參數(shù)的注解使用方式(@Param)_第2頁
mybatis多個接口參數(shù)的注解使用方式(@Param)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

mybatis多個接口參數(shù)的注解使用方式(@Param)1簡介單1參數(shù)在ybat中,很多時候,我們傳入接口的參數(shù)只有一個。對應(yīng)接口參數(shù)的類型有兩種,一種是基本的參數(shù)類型,一種是aa。例如在根據(jù)主鍵獲取對象時,我們只需要傳入一個主鍵的參數(shù)即可。而在插入,更新等操作時,一般會涉及到很多參數(shù),我們就使用aaoa多2參數(shù)但是,在實際的情況中,我們遇到類似這樣的情況可能:1.接口需要使用的參數(shù)多于一個;接口需要使用的參數(shù)又遠(yuǎn)少于對應(yīng)aa的成員變量,或者需要多個aa對象;或者需要使用的參數(shù)對應(yīng)aa沒有相應(yīng)的成員變量。比如獲取一段時間產(chǎn)生的日志信息,日志對應(yīng)的aa只有一個日期,那我們使用該aa就無法滿足我們的要求。又比如我們進(jìn)行模糊搜索,搜索條件只有兩個,但對應(yīng)的aa有a個成員變量,那創(chuàng)建對應(yīng)的aa就過于浪費了。對此,我知道的有如下幾種方法2多個接口參數(shù)的兩種使用方式方法不推薦對應(yīng)中的參數(shù)名字,a對應(yīng)需要傳入的aramsa方法的使用很簡單,就是將對應(yīng)的參數(shù)以y對應(yīng)中的參數(shù)名字,a對應(yīng)需要傳入的arams參數(shù)值。以獲取一段時間內(nèi)存儲的用戶為例2.1創(chuàng).建1接口方法獲取*一段時間內(nèi)的用戶@aramarams@rtristttsttratimatri該方法返回的是多個記錄,因此使用作為返回值。配置對應(yīng)的tistetweetistetwee;CreatedTime"aram1erType="java.util.MalectiriBase_Colum;_List"romstude;trmtratbimjdbcType=TIPamtap="Basime,jdbi與之前創(chuàng)建的方法名一樣。@Testpubli@Testpubliap<tribct>params=;ewHashMaalearbimCale;dar.getI;sta;ceidtestreatedTimeMa是從t,所以月是bimstaararamstbimbimtimCalendareTime=Calendar.getInstance();eTime.set(2018,Calendar.SEPTEMBER,2);params.put("eTime",eTime.getTime());SqlSessionsqlSession=null;try{sqlSession=sqlSessionFactory.openSession();StudentMapperstudentMapper=(StudentMapper)sqlSession.getMapper(StudentMapper.class);List<Student>students=studentMapper.selectBetweenCreatedTime(params);for(inti=0;i<students.size();i++){System.out.println(students.get(i));}}catch(Exceptione){e.printStackTrace();}finally{if(sqlSession!=null){sqlSession.close();}}}調(diào)用方法很簡單,傳入相應(yīng)的Map參數(shù)即可。此時,Map中的key對應(yīng)。因此,在此例子中傳入的參數(shù)傳入一個key為btime的時間,作為開始時間;傳入一個key為etime的時間,作為結(jié)束時間;@Param方法(推薦)@Param方法就是使用注解的方式,2.2.1創(chuàng)建接口方法/**獲取指定時間內(nèi)的對象@parampbTime開始時間@parampeTime結(jié)束時間@return*/List<Student>selectBetweenCreatedTimeAnno(@Param("bTime")DatepbTime,@Param("eTime")DatepeTime);@Param("bTime"就是告訴mybatis,參數(shù)pbTime在SQL語句中用bTime作為key。也就是說,mybatis幫我們完成了調(diào)用時,類似params.put("bTime",pbTime)這個過程。配置SQL語句<selectid="selectBetweenCreatedTimeAnno"resultMap="BaseResultMap">select<includerefid="Base_Column_List"/>fromstudentwheregmt_created>#{bTime,jdbcType=TIMESTAMP}andgmt_created<#{eTime,jdbcType=TIMESTAMP}</select>此處的bTime對應(yīng)**@Param(“bTime”)**中的bTime,需要完全一致。eTime也是一樣。調(diào)用在調(diào)用時,不需要創(chuàng)建Map了,只需要按參數(shù)提示傳入對應(yīng)的實際參數(shù)即可。@TestpublicvoidtestSelectBtweenCreatedTimeAnno(){Map<String,Object>params=newHashMap<>();CalendarbTime=Calendar.getInstance();//month是從0~11,所以9月是8bTime.set(2018,Calendar.AUGUST,29);CalendareTime=Calendar.getInstance();eTime.set(2018,Calendar.SEPTEMBER,2);SqlSessionsqlSession=null;try{sqlSession=sqlSessionFactory.openSession();StudentMapperstudentMapper=(StudentMapper)sqlSession.getMapper(StudentMapper.class);List<Student>students=studentMapper.selectBetweenCreatedTimeAnno(bTime.getTime(),eTime.getTime());for(inti=0;i<students.size();i++){System.out.println(students.get(i));}}catch(Exceptione){e.printStackTrace();}finally{if(sqlSession!=null){sqlSession.close();}}}@Param的優(yōu)勢Map方式的缺點就是需要手動創(chuàng)建Map,并對SQL中的參數(shù)進(jìn)行賦值。其缺點:手動創(chuàng)建Map這個過程很不簡潔,看著很繁瑣。手動對參數(shù)進(jìn)行賦值,很容易出錯。比如本來是要params.put("bTime",bTime)可能會不小心寫成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論