MyBatis反向生成Example類的使用方式
MyBatis反向生成Example類使用
一、逆向工程
MyBatis的逆向工程不僅僅可以生成和表相對應的實體類還可以根據數據庫種的表自動生成Example類,我們可以用Example類
實現條件增刪改查而不用自己再去寫sql語句。
二、Example類的生成
只要在generatorConfig.xml 文件中用表名生成對應的實體類時將生成Example的信息都變?yōu)閠rue即可。
<table tableName="user"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="false"
</table>
三、Example類的使用
打開一個Exapmle類我們會看到以下幾個成員
protected String orderByClause; protected Integer start; protected Integer length; protected boolean distinct; protected List<Criteria> oredCriteria;
orderByClause:用于指定ORDER BY條件,這個條件沒有構造方法,直接通過傳遞字符串值指定。start和length:是分頁時用來指定查詢第幾條數據到第幾條數據的。distinct:是用來指定是否要去重查詢的,true為去重,false不去重。oredCriteriia:是用來指定查詢條件的。
逆向工程生成的文件XxxExample.java中包含一個static 的內部類 Criteria ,在Criteria中有很多方法,主要是定義SQL 語 句where后的查詢條件。
四、使用方法
在service種可以這么寫
//指定要進行去重查詢 userBankCardExample.setDistinct(true); //指定查詢條件 userBankCardExample.createCriteria().andUserIdEqualTo(iptUserBankCard.getUserId()); //調用查詢方法 List<UserBankCard> userBankCadList = userBankCardDao.selectByExample(userBankCardExample);
注意:在調用upateExample()是更新所有字段,包括字段為null的也更新,建議使用 updateByExampleSelective()更新想更新的字段
MyBatis逆向工程生成Example類的方法總結
很早之前就在項目開發(fā)中多次使用MyBatis逆向工程生成的Example類,但一直沒有對其下的方法做一個簡單的總結,現總結如下:
一、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類中的部分常用方法及功能如下:
| 方法 | 功能說明 |
| 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之間條件 |
注:在mybatis逆向工程生成的文件XxxExample.java中包含一個static的內部類Criteria,Criteria中的方法是定義SQL 語句where后的查詢條件。
三、小結一下
XxxExample.java只能實現簡單條件增刪改查,復雜的功能還需要自己編寫sql代碼來實現。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot集成tensorflow實現圖片檢測功能
TensorFlow名字的由來就是張量(Tensor)在計算圖(Computational?Graph)里的流動(Flow),它的基礎就是前面介紹的基于計算圖的自動微分,本文將給大家介紹Spring?Boot集成tensorflow實現圖片檢測功能,需要的朋友可以參考下2024-06-06
Springboot 實現跨域訪問無需使用jsonp的實現代碼
這篇文章主要介紹了Springboot 實現跨域訪問 無需使用jsonp的實現代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09

