1. 程式人生 > >MyBatis中通用Mapper介面以及Example的方法解析

MyBatis中通用Mapper介面以及Example的方法解析

一、通用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的欄位

二、Example例項解析

mybatis的逆向工程中會生成例項及例項對應的example,example用於新增條件,相當where後面的部分

import tk.mybatis.mapper.entity.Example;

Example example = new Example(JavaBean.class);
Example.Criteria criteria = example.createCriteria();
方法 說明
example.setOrderByClause(“欄位名 ASC”); 添加升序排列條件,DESC為降序
example.setDistinct(false) 去除重複,boolean型,true為選擇不重複的記錄。
criteria.andXxxIsNull 新增欄位xxx為null的條件
criteria.andXxxIsNotNull 新增欄位xxx不為null的條件
criteria.andXxxEqualTo(value) 新增xxx欄位等於value條件
criteria.andXxxNotEqualTo(value) 新增xxx欄位不等於value條件
criteria.andXxxGreaterThan(value) 新增xxx欄位大於value條件
criteria.andXxxGreaterThanOrEqualTo(value) 新增xxx欄位大於等於value條件
criteria.andXxxLessThan(value) 新增xxx欄位小於value條件
criteria.andXxxLessThanOrEqualTo(value) 新增xxx欄位小於等於value條件
criteria.andXxxIn(List<?>) 新增xxx欄位值在List<?>條件
criteria.andXxxNotIn(List<?>) 新增xxx欄位值不在List<?>條件
criteria.andXxxLike(“%”+value+”%”) 新增xxx欄位值為value的模糊查詢條件
criteria.andXxxNotLike(“%”+value+”%”) 新增xxx欄位值不為value的模糊查詢條件
criteria.andXxxBetween(value1,value2) 新增xxx欄位值在value1和value2之間條件
criteria.andXxxNotBetween(value1,value2) 新增xxx欄位值不在value1和value2之間條件

三、使用案例

1.查詢

① selectByPrimaryKey() 按主鍵查詢

//相當於:select * from user where id = 100;
User user = UserMapper.selectByPrimaryKey(100); 

② selectByExample() 和 selectByExampleWithBLOGs()

//相當於:select * from user where username = 'wyw' 
// and  username is null order by username asc,email desc
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("wyw");
criteria.andUsernameIsNull();
example.setOrderByClause("username asc,email desc");
List<?>list = XxxMapper.selectByExample(example);

2.插入資料

①insert()

//相當於:insert into user(ID,username,password,email) values 
//('dsfgsdfgdsfgds','jack','1234','[email protected]');
User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("jack");
user.setPassword("1234")
user.setEmail("[email protected]");
XxxMapper.insert(user);

3.更新資料

①updateByPrimaryKey()

//相當於:update user set username='rose', password='5678', 
//email='[email protected]' where id='a01'
User user =new User();
user.setId("a01");
user.setUsername("rose");
user.setPassword("5678");
user.setEmail("[email protected]");
XxxMapper.updateByPrimaryKey(user);

②updateByPrimaryKeySelective()

//相當於:update user set password='7890' where id='a01'
User user = new User();
user.setId("a01");
user.setPassword("7890");
XxxMapper.updateByPrimaryKey(user);

③ updateByExample() 和 updateByExampleSelective()

//相當於:update user set password='6666' where username='jack'
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("jack");
User user = new User();
user.setPassword("6666");
XxxMapper.updateByPrimaryKeySelective(user,example);

updateByExample()更新所有的欄位,包括欄位為null的也更新
建議使用 updateByExampleSelective()更新想更新的欄位

4.刪除資料

①deleteByPrimaryKey()

//相當於:delete from user where id=1
XxxMapper.deleteByPrimaryKey(1);  

②deleteByExample()

//相當於:delete from user where username='jack'
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("jack");
XxxMapper.deleteByExample(example);

5.查詢資料數量

①countByExample()

//相當於:select count(*) from user where username='jack'
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("jack");
int count = XxxMapper.countByExample(example);