MyBatis中通用Mapper接口以及Example的方法解析

1、通用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的字段

2、Example實例解析

mybatis的逆向工程中會生成實例及實例對應的example,example用於添加條件,至關where後面的部分java

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之間條件

3、使用案例

1.查詢

① selectByPrimaryKey() 按主鍵查詢mybatis

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

② selectByExample() 和 selectByExampleWithBLOGs()app

//至關於: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()spa

//至關於:insert into user(ID,username,password,email) values 
//('dsfgsdfgdsfgds','jack','1234','hello@126.com');
User user = new User();
user.setId("dsfgsdfgdsfgds");
user.setUsername("jack");
user.setPassword("1234")
user.setEmail("hello@163.com");
XxxMapper.insert(user);

3.更新數據

①updateByPrimaryKey()code

//至關於:update user set username='rose', password='5678', 
//email='hello@163.com' where id='a01'
User user =new User();
user.setId("a01");
user.setUsername("rose");
user.setPassword("5678");
user.setEmail("hello@163.com");
XxxMapper.updateByPrimaryKey(user);

②updateByPrimaryKeySelective()it

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

③ updateByExample() 和 updateByExampleSelective()io

//至關於: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()更新想更新的字段table

4.刪除數據

①deleteByPrimaryKey()class

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

②deleteByExample()email

//至關於: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);
相關文章
相關標籤/搜索