1. 程式人生 > 實用技巧 >Myabtis逆向工程

Myabtis逆向工程

一、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之間條件
criteria.andXxxNotBetween(value1,value2) 新增xxx欄位值不在value1和value2之間條件

三、應用舉例

1.查詢

① selectByPrimaryKey()

User user = XxxMapper.selectByPrimaryKey(100); //相當於select * from user where id = 100
  • 1

② selectByExample() 和 selectByExampleWithBLOGs()

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

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

2.插入資料

①insert()

  1. User user = new User();
  2. user.setId("dsfgsdfgdsfgds");
  3. user.setUsername("admin");
  4. user.setPassword("admin")
  5. user.setEmail("[email protected]");
  6. XxxMapper.insert(user);
  7. //相當於:insert into user(ID,username,password,email) values ('dsfgsdfgdsfgds','admin','admin','[email protected]');

3.更新資料

①updateByPrimaryKey()

  1. User user =new User();
  2. user.setId("dsfgsdfgdsfgds");
  3. user.setUsername("wyw");
  4. user.setPassword("wyw");
  5. user.setEmail("[email protected]");
  6. XxxMapper.updateByPrimaryKey(user);
  7. //相當於:update user set username='wyw', password='wyw', email='[email protected]' where id='dsfgsdfgdsfgds'

②updateByPrimaryKeySelective()

  1. User user = new User();
  2. user.setId("dsfgsdfgdsfgds");
  3. user.setPassword("wyw");
  4. XxxMapper.updateByPrimaryKey(user);
  5. //相當於:update user set password='wyw' where id='dsfgsdfgdsfgds'

③ updateByExample() 和 updateByExampleSelective()

  1. UserExample example = new UserExample();
  2. Criteria criteria = example.createCriteria();
  3. criteria.andUsernameEqualTo("admin");
  4. User user = new User();
  5. user.setPassword("wyw");
  6. XxxMapper.updateByPrimaryKeySelective(user,example);
  7. //相當於:update user set password='wyw' where username='admin'

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

4.刪除資料

①deleteByPrimaryKey()

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

②deleteByExample()

  1. UserExample example = new UserExample();
  2. Criteria criteria = example.createCriteria();
  3. criteria.andUsernameEqualTo("admin");
  4. XxxMapper.deleteByExample(example);
  5. //相當於:delete from user where username='admin'

5.查詢資料數量

①countByExample()

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