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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

mybatis多個接口參數(shù)的注解使用方式(@Param)1簡介單1參數(shù)在ybat中,很多時候,我們傳入接口的參數(shù)只有一個。對應接口參數(shù)的類型有兩種,一種是基本的參數(shù)類型,一種是aa。例如在根據(jù)主鍵獲取對象時,我們只需要傳入一個主鍵的參數(shù)即可。而在插入,更新等操作時,一般會涉及到很多參數(shù),我們就使用aaoa多2參數(shù)但是,在實際的情況中,我們遇到類似這樣的情況可能:1.接口需要使用的參數(shù)多于一個;接口需要使用的參數(shù)又遠少于對應aa的成員變量,或者需要多個aa對象;或者需要使用的參數(shù)對應aa沒有相應的成員變量。比如獲取一段時間產生的日志信息,日志對應的aa只有一個日期,那我們使用該aa就無法滿足我們的要求。又比如我們進行模糊搜索,搜索條件只有兩個,但對應的aa有a個成員變量,那創(chuàng)建對應的aa就過于浪費了。對此,我知道的有如下幾種方法2多個接口參數(shù)的兩種使用方式方法不推薦對應中的參數(shù)名字,a對應需要傳入的aramsa方法的使用很簡單,就是將對應的參數(shù)以y對應中的參數(shù)名字,a對應需要傳入的arams參數(shù)值。以獲取一段時間內存儲的用戶為例2.1創(chuàng).建1接口方法獲取*一段時間內的用戶@aramarams@rtristttsttratimatri該方法返回的是多個記錄,因此使用作為返回值。配置對應的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();}}}調用方法很簡單,傳入相應的Map參數(shù)即可。此時,Map中的key對應。因此,在此例子中傳入的參數(shù)傳入一個key為btime的時間,作為開始時間;傳入一個key為etime的時間,作為結束時間;@Param方法(推薦)@Param方法就是使用注解的方式,2.2.1創(chuàng)建接口方法/**獲取指定時間內的對象@parampbTime開始時間@parampeTime結束時間@return*/List<Student>selectBetweenCreatedTimeAnno(@Param("bTime")DatepbTime,@Param("eTime")DatepeTime);@Param("bTime"就是告訴mybatis,參數(shù)pbTime在SQL語句中用bTime作為key。也就是說,mybatis幫我們完成了調用時,類似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對應**@Param(“bTime”)**中的bTime,需要完全一致。eTime也是一樣。調用在調用時,不需要創(chuàng)建Map了,只需要按參數(shù)提示傳入對應的實際參數(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ù)進行賦值。其缺點:手動創(chuàng)建Map這個過程很不簡潔,看著很繁瑣。手動對參數(shù)進行賦值,很容易出錯。比如本來是要params.put("bTime",bTime)可能會不小心寫成

溫馨提示

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

評論

0/150

提交評論