記錄分為兩個部分,第一部分主要關注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'