天天看點

MyBatis--通用Mapper接口及Example執行個體函數mapper接口中的方法解析example執行個體解析應用舉例

目錄

mapper接口中的方法解析

example執行個體解析

應用舉例

查詢

① selectByPrimaryKey()

② selectByExample() 和 selectByExampleWithBLOGs()

插入資料

①insert()

更新資料

① updateByPrimaryKey()

② updateByPrimaryKeySelective()

③ updateByExample() 和 updateByExampleSelective()

删除資料

① deleteByPrimaryKey()

② deleteByExample()

查詢資料數量

① countByExample()

mapper接口中的方法解析

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 按主鍵查詢
ListselectByExample(UserExample example) thorws SQLException 按條件查詢
ListselectByExampleWithBLOGs(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後面的部分

xxxExample example = new xxxExample();

Criteria criteria = new 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之間條件

應用舉例

查詢

① selectByPrimaryKey()

相當于:

select * from user where id = 100

User user = XxxMapper.selectByPrimaryKey(100);
           

② selectByExample() 和 selectByExampleWithBLOGs()

相當于:

select * from user where username = 'wyw' and  username is null order by username asc,email desc

Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("wyw");
criteria.andUsernameIsNull();
example.setOrderByClause("username asc,email desc");
List<?>list = XxxMapper.selectByExample(example);
           

注:在iBator逆向工程生成的檔案XxxExample.java中包含一個static的内部類Criteria,Criteria中的方法是定義SQL 語句where後的查詢條件。

插入資料

①insert()

相當于:

insert into user(ID,username,password,email) values ('dsfgsdfgdsfgds','admin','admin','[email protected]');

User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("admin");
user.setPassword("admin")
user.setEmail("[email protected]");
XxxMapper.insert(user);
           

更新資料

① updateByPrimaryKey()

相當于:

update user set username='wyw', password='wyw', email='[email protected]' where id='dsfgsdfgdsfgds'

User user =new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("wyw");
user.setPassword("wyw");
user.setEmail("[email protected]");
XxxMapper.updateByPrimaryKey(user);
           

② updateByPrimaryKeySelective()

相當于:

update user set password='wyw' where id='dsfgsdfgdsfgds'

User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setPassword("wyw");
XxxMapper.updateByPrimaryKey(user);
           

③ updateByExample() 和 updateByExampleSelective()

相當于:

update user set password='wyw' where username='admin'

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("admin");
User user = new User();
user.setPassword("wyw");
XxxMapper.updateByPrimaryKeySelective(user,example);
           

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

删除資料

① deleteByPrimaryKey()

相當于:

delete from user where id=1

XxxMapper.deleteByPrimaryKey(1);
           

② deleteByExample()

相當于:

delete from user where username='admin'

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("admin");
XxxMapper.deleteByExample(example);
           

查詢資料數量

① countByExample()

相當于:

select count(*) from user where username='wyw'

UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("wyw");
int count = XxxMapper.countByExample(example);
           

繼續閱讀