mybatis中的mapper接口文件以及selectByExample類的實例函數詳解


記錄分為兩個部分,第一部分主要關注selectByExample類的實例函數的實現;第二部分討論Mybatis框架下基本的實例函數。

(一)selectByExample類的實例函數的實現

當你啟動項目,並且打算查詢相應的數據庫中的相應的表時:

 接着跟蹤進去:

 

然后查詢過程就交給了Mybatis框架處理了,那么還有一個問題,我們知道selectByExample實例函數的參數SQL語句的條件值,那么這個是怎么實現的呢?一般在entity層包含一個static 的內部類 Criteria ,在Criteria中有很多方法,主要是定義SQL 語句where后的查詢條件。

 

這樣大概就能使用Mybatis的接口了,當然后續還得深入的學習Mybatis框架。

 

(二)Mybatis框架下基本的實例函數

這個部分是參考的網上的Mapper接口的其他的example實例函數,可以看一下,對於Mybatis下的基本服務接口能有一個大概的脈絡。

    ##Example example = new ##Example();  
    example.setOrderByClause("字段名 ASC"); //升序排列,desc為降序排列。  
    example.setDistinct(false)//去除重復,boolean型,true為選擇不重復的記錄。  
    Criteria criteria = new Example().createCriteria();  
    is null;is not null;  
    equal to(value);not equal to(value);  
    GreaterThan(value);GreaterThanOrEqualTo(value);  
    LessThan(value); LessThanOrEqualTo(value);  
    in(item,item,item,...);not in(item,item,item,...);  
    like("%"+value+"%");not like("%"+value+"%");  
    Between(value1,value2);not between(value1,value2)  
      
       
      
    mybatis中mapper的實例函數:  
    int countByExample(UserExample example) thorws SQLException:按條件計數。  
    int deleteByPrimaryKey(Integer id) thorws SQLException:按主鍵刪除。  
    int deleteByExample(UserExample example) thorws SQLException:按條件刪除。  
    String/Integer insert(User record) thorws SQLException:插入(返回值為id值)  
    User selectByPrimaryKey(Integer id) thorws SQLException:按主鍵查詢。  
    List<?>selectByExample(UserExample example) thorws SQLException:按條件查詢  
    List<?>selectByExampleWithBLOGs(UserExample example) thorws SQLException:按  
      
    條件查詢(包括BLOB字段)。只有當數據表中的字段類型有為二進制的才會產生。  
    int updateByPrimaryKey(User record) thorws SQLException:按主鍵更新  
    int updateByPrimaryKeySelective(User record) thorws SQLException:按主鍵更新  
      
     值不為null的字段  
    int updateByExample(User record, UserExample example) thorws SQLException:   
      
    按條件更新  
    int updateByExampleSelective(User record, UserExample example) thorws    
      
    SQLException:按條件更新值不為null的字段  
      
    mybatis中mapper的實例函數詳解:  
    ① selectByPrimaryKey()  
      
    User user = ##Mapper.selectByPrimaryKey(100); 相當於select * from user where  
      
    id = 100  
      
    ② selectByExample() 和 selectByExampleWithBLOGs()  
      
    UserExample example = new UserExample();  
    Criteria criteria = example.createCriteria();  
    criteria.andUsernameEqualTo("joe");  
    criteria.andUsernameIsNull();  
    example.setOrderByClause("username asc,email desc");  
    List<?>list = ##Mapper.selectByExample(example);  
    相當於:select * from user where username = 'joe' and username is null order  
      
    by username asc,email desc  
      
    注:在iBator 生成的文件UserExample.java中包含一個static 的內部類 Criteria ,  
      
    在Criteria中有很多方法,主要是定義SQL 語句where后的查詢條件。  
      
    ③ insert()  
      
    User user = new User();  
    user.setId(101);  
    user.setUsername("test");  
    user.setPassword("123")  
    user.setEmail("joe@163.com");  
    ##Mapper.insert(user);  
    相當於:insert into user(ID,username,password,email) values  
      
    (101,'test','123','joe@163.com');  
      
     ④ updateByPrimaryKey() 和 updateByPrimaryKeySelective()  
      
    User user =new User();  
    user.setId(101);  
    user.setUsername("joe");  
    user.setPassword("joe");  
    user.setEmail("joe@163.com");  
    ##Mapper.updateByPrimaryKey(user);  
    相當於:update user set username='joe',password='joe',email='joe@163.com'  
      
    where id=101  
      
    User user = new User();  
    user.setId(101);  
    user.setPassword("joe");  
    ##Mapper.updateByPrimaryKeySelective(user);  
    相當於:update user set password='joe' where id=101  
      
    ⑤ updateByExample() 和 updateByExampleSelective()  
      
    UserExample example = new UserExample();  
    Criteria criteria = example.createCriteria();  
    criteria.andUsernameEqualTo("joe");  
    User user = new User();  
    user.setPassword("123");  
    ##Mapper.updateByPrimaryKeySelective(user,example);  
    相當於:update user set password='123' where username='joe'  
      
    ⑥ deleteByPrimaryKey()  
      
    ##Mapper.deleteByPrimaryKey(101);  相當於:delete from user where id=101  
      
    ⑦ deleteByExample()  
      
    UserExample example = new UserExample();  
    Criteria criteria = example.createCriteria();  
    criteria.andUsernameEqualTo("joe");  
    ##Mapper.deleteByExample(example);  
    相當於:delete from user where username='joe'  
      
    ⑧ countByExample()  
      
    UserExample example = new UserExample();  
    Criteria criteria = example.createCriteria();  
    criteria.andUsernameEqualTo("joe");  
    int count = ##Mapper.countByExample(example);  
    相當於:select count(*) from user where username='joe'  
View Code


免責聲明!

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



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