Mybatis中的自帶Mapper方法



1.各方法介紹

mybatis逆向工程生成的mapper源碼:

import com.itheima.springmvc.pojo.Items;
import com.itheima.springmvc.pojo.ItemsExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
 
public interface ItemsMapper {
	
    //按條件計數	
    int countByExample(ItemsExample example);
 
    //按條件刪除
    int deleteByExample(ItemsExample example);
 
    //按主鍵刪除
    int deleteByPrimaryKey(Integer id);
 
    //插入數據(返回值為ID):如果record定義了兩個字段,其中有一個字段是主鍵,數據庫共4個字段,則根據主鍵修改數據庫的兩個字段,其余兩個字段改為null;
    int insert(Items record);
 
    //插入數據(返回值為ID):如果record定義了兩個字段,其中有一個字段是主鍵,數據庫共4個字段,則根據主鍵修改數據庫的兩個字段,其余兩個字段不動;
    int insertSelective(Items record);
 
    //按條件查詢(包括BLOB字段)。只有當數據表中的字段類型有為二進制的才會產生。
    List<Items> selectByExampleWithBLOBs(ItemsExample example);
 
    //按條件查詢
    List<Items> selectByExample(ItemsExample example);
 
    //按主鍵查詢
    Items selectByPrimaryKey(Integer id);
 
    //按條件更新值不為null的字段:如果example定義了兩個字段,數據庫共4個字段,則修改數據庫的兩個字段,其余兩個字段不動;
    int updateByExampleSelective(@Param("record") Items record, @Param("example") ItemsExample example);
 
    //和updateByExample相比此方法可以修改大字段類型,其余性質和updateByExample相同
    int updateByExampleWithBLOBs(@Param("record") Items record, @Param("example") ItemsExample example);
 
    //按條件更新:如果example定義了兩個字段,數據庫共4個字段,則修改數據庫的兩個字段,其余兩個字段改為null;
    int updateByExample(@Param("record") Items record, @Param("example") ItemsExample example);
 
    //按主鍵更新值不為null的字段:如果record定義了兩個字段,其中有一個字段是主鍵,數據庫共4個字段,則根據主鍵修改數據庫的兩個字段,其余兩個字段不動;
    int updateByPrimaryKeySelective(Items record);
 
    //和updateByPrimaryKey相比此方法可以修改大字段類型,其余性質和updateByPrimaryKey相同
    int updateByPrimaryKeyWithBLOBs(Items record);
 
    //按主鍵更新:如果record定義了兩個字段,其中有一個字段是主鍵,數據庫共4個字段,則根據主鍵修改數據庫的兩個字段,其余兩個字段改為null;
    int updateByPrimaryKey(Items record);
}

2.方具體使用

1、countByExample ===>根據條件查詢數量

int countByExample(UserExampleexample); 
//下面是一個完整的案列
UserExampleexample=newUserExample();
Criteriacriteria=example.createCriteria();
criteria.andUsernameEqualTo("joe");
intcount=userDAO.countByExample(example);
相當於:select count(*)from user where username='joe';

2、deleteByExample ===>根據條件刪除多條

int deleteByExample(AccountExample example); 
//下面是一個完整的案例
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("joe");
userDAO.deleteByExample(example); 
相當於:delete from user where username='joe';

3、deleteByPrimaryKey===>根據條件刪除單條

int deleteByPrimaryKey(Integerid);
userDAO.deleteByPrimaryKey(10001); 
相當於:delete from user where id=10001;

4、insert===>插入數據

int insert(Account record); 
//下面是完整的案例
User user = new User(); 
user.setId(10001); 
user.setUsername("mrHan"); 
user.setPassword("123456") 
user.setEmail("786***195@qq.com"); 
userDAO.insert(user); 
相當於:insert into user(ID,username,password,email) values(10001,'mrHan','123456','786***195@qq.com');

5、insertSelective===>插入數據

int insertSelective(Accountrecord);

6、selectByExample===>根據條件查詢數據

List<Account> selectByExample(AccountExample example); 
UserExample example = new UserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo("joe");
criteria.andUsernameIsNull();
example.setOrderByClause("username asc,email desc");
List<T>list = userDAO.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后的查詢條件。

7、selectByPrimaryKey===>根據主鍵查詢數據

AccountselectByPrimaryKey(Integer id);
//相當於select * from user where id = {id};

8、updateByExampleSelective===>按條件更新值不為null的字段

int updateByExampleSelective(@Param("record") Account record, @Param("example") AccountExample example); 
//下面是一個完整的案列
UserExample example = new UserExample(); 
Criteria criteria = example.createCriteria(); 
criteria.andUsernameEqualTo("joe"); 
User user = new User(); 
user.setPassword("123456"); 
userDAO.updateByPrimaryKeySelective(user,example); 
相當於:update user set password='123456' where username='joe';

9、updateByExampleSelective===>按條件更新

int updateByExample(@Param("record")Accountrecord,@Param("example")AccountExampleexample);

10、updateByPrimaryKeySelective===>按條件更新

int updateByPrimaryKeySelective(Account record); 
//下面是一個完整的案例 
User user = new User();user.setId(10001);
user.setPassword("123456");
userDAO.updateByPrimaryKeySelective(user);
相當於:update user set password='123456' where id=10001

11、updateByPrimaryKey===>按主鍵更新

int updateByPrimaryKey(Accountrecord); 
//下面是一個完整的案例
Useruser=newUser();
user.setId(10001);
user.setUsername("mrHan");
user.setPassword("123456");
user.setEmail("786***195@qq.com");
userDAO.updateByPrimaryKey(user);
相當於:update user set username='mrHan',password='123456',email='786**195@qq.com'where id=10001;
int updateByPrimaryKeySelective(Accountrecord); 
//下面是一個完整的案例 
Useruser=newUser();
user.setId(10001);
user.setPassword("123456");
userDAO.updateByPrimaryKeySelective(user);
相當於:update user set password='123456'where id=10001;
補充 
Mybatis自動生成的查詢selectByExample(TExample example) 中like需要自己寫通配符

TExample example = new TExample(); 
TExample.Criteria criteria = example.createCriteria(); 
if(StringUtils.isNotBlank(userName)){ 
userName = "%" + userName + "%"; 
} 
if(StringUtils.isNotBlank(userName)){ 
  criteria.andBuyerNameLike(userName); 
} 
dao.countByExample(example)

 


免責聲明!

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



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