mybatis第二篇—參數綁定


不管我們在做數據庫作業或者任務還是當時的僅靠jdbc來寫一個管理系統的時候,sql語句需要一些參數,從而來實現模糊查詢,精確查詢,插入數據,更新數據和刪除數據。這些參數,在mybatis里面,又該如何使用呢?我總結了一下五點:

  • 單個參數的綁定:

這個和上一篇的用法是一樣的,我們直接在mapper文件里面用#{}代替參數,就可以完成單個參數綁定,例如代碼:

mapper.xml文件:


   
   
  
  
          
  1. < select id= "findById" resultType= "Teacher">
  2. select * from teacher where tid= #{tid}
  3. </ select>

在dao層的接口里面,只需要寫上對應的方法:

public Teacher findById(int tid);
  
  
 
 
         

 這樣,直接用sqlsession去讀取這個dao的接口,然后調用這個方法,就可以實現單個參數的傳遞了。

  • 多個參數綁定:

如果一個sql語句的查詢條件有多個的話,就需要多個參數的綁定了。

  • 多個參數綁定:索引傳遞

在mapper文件中:


   
   
  
  
          
  1. < select id= "findByNameAndCourseWithIndex" resultType= "Teacher">
  2. select * from teacher where tname= #{0} and tcourse=#{1}
  3. </ select>

 在dao層的接口里面:

public Teacher findByNameAndCourseWithIndex(String tname,String tcourse);
  
  
 
 
         

 這樣就實現了根據索引值來傳遞參數的問題。

  • 多個參數綁定:注解綁定

除了索引,我們mybatis還提供了注解的方式來傳遞參數

mapper文件中:


   
   
  
  
          
  1. < select id= 'findByNameAndCourseWithBind' resultType= "Teacher">
  2. select * from teacher where tname= #{tname} and tcourse=#{tcourse}
  3. </ select>

 dao層的接口:

public Teacher findByNameAndCourseWithBind(@Param("tname")String tname,@Param("tcourse")String tcourse);
  
  
 
 
         

可以看到,mapper文件中的#{}里面的參數,用@Param()綁定給了dao層的方法,而#{}和@Param()需要一致。這樣就實現了參數通過注解的方式綁定。 

  • 多個參數綁定:map綁定

利用map,來傳遞參數,我們知道map是一個鍵值對形式存儲信息的集合,所以利用map也可以實現參數的綁定

mapper文件代碼:


   
   
  
  
          
  1. < select id= "findByNameAndCourseWithMap" resultType= "Teacher">
  2. select * from teacher where tname= #{tname} and tcourse=#{tcourse}
  3. </ select>

dao層接口文件代碼:

public Teacher findByNameAndCourseWithMap(Map paramMap);
  
  
 
 
         

 在調用接口去使用這個方法的時候,我們需要用到put()方法,來將參數傳遞過去,例如這里就是paramMap.put("tname","張三")這樣一來,就好理解了,鍵值對的存在,也就形成了一個實參和形參的綁定。

  • 多個參數綁定:直接傳遞

和單個參數傳遞一樣,我們可以使用直接傳遞的方法去傳遞多個參數

mapper文件:


   
   
  
  
          
  1. < select id= "findByNameAndCourseWithObject" resultType= "Teacher" >
  2. select * from teacher where tname= #{tname} and tcourse=#{tcourse}
  3. </ select>

 dao層接口:

這樣一來,我們就也能實現一種參數的傳遞。

不過要注意的是,mybatis中的SQL接受的參數有基本的數據類型,對象,List,數組和Map,無論傳遞那種參數給mybatis,都會將參數放在一個Map中,如果傳入基本類型:變量名作為key,變量值作為value 此時生成的map只有一個元素。如果傳入對象: 對象的屬性名作為key,屬性值作為value,如果傳入List: "list"作為key,這個List是value (這類參數可以迭代,利用標簽實現循環)如果傳入數組: "array"作為key,數組作為value(同上)如果傳入Map: 鍵值不變。

git源碼地址:https://github.com/yueyue123123/mybatisDemo.git

原文地址:https://blog.csdn.net/u010159380/article/details/82255461


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM