MyBatis反向生成Example類的使用方式
MyBatis反向生成Example類使用
一、逆向工程
MyBatis的逆向工程不僅僅可以生成和表相對(duì)應(yīng)的實(shí)體類還可以根據(jù)數(shù)據(jù)庫(kù)種的表自動(dòng)生成Example類,我們可以用Example類
實(shí)現(xiàn)條件增刪改查而不用自己再去寫sql語句。
二、Example類的生成
只要在generatorConfig.xml 文件中用表名生成對(duì)應(yīng)的實(shí)體類時(shí)將生成Example的信息都變?yōu)閠rue即可。
<table tableName="user" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="false" </table>
三、Example類的使用
打開一個(gè)Exapmle類我們會(huì)看到以下幾個(gè)成員
protected String orderByClause; protected Integer start; protected Integer length; protected boolean distinct; protected List<Criteria> oredCriteria;
orderByClause
:用于指定ORDER BY條件,這個(gè)條件沒有構(gòu)造方法,直接通過傳遞字符串值指定。start
和length
:是分頁時(shí)用來指定查詢第幾條數(shù)據(jù)到第幾條數(shù)據(jù)的。distinct
:是用來指定是否要去重查詢的,true為去重,false不去重。oredCriteriia
:是用來指定查詢條件的。
逆向工程生成的文件XxxExample.java中包含一個(gè)static 的內(nèi)部類 Criteria ,在Criteria中有很多方法,主要是定義SQL 語 句where后的查詢條件。
四、使用方法
在service種可以這么寫
//指定要進(jìn)行去重查詢 userBankCardExample.setDistinct(true); //指定查詢條件 userBankCardExample.createCriteria().andUserIdEqualTo(iptUserBankCard.getUserId()); //調(diào)用查詢方法 List<UserBankCard> userBankCadList = userBankCardDao.selectByExample(userBankCardExample);
注意:在調(diào)用upateExample()是更新所有字段,包括字段為null的也更新,建議使用 updateByExampleSelective()更新想更新的字段
MyBatis逆向工程生成Example類的方法總結(jié)
很早之前就在項(xiàng)目開發(fā)中多次使用MyBatis逆向工程生成的Example類,但一直沒有對(duì)其下的方法做一個(gè)簡(jiǎn)單的總結(jié),現(xiàn)總結(jié)如下:
一、mapper接口中的方法解析
mapper接口中的部分常用方法及功能如下:
方法 | 功能說明 |
int countByExample(UserExample example) thorws SQLException | 按條件計(jì)數(shù) |
int deleteByPrimaryKey(Integer id) thorws SQLException | 按主鍵刪除 |
int deleteByExample(UserExample example) thorws SQLException | 按條件刪除 |
String/Integer insert(User record) thorws SQLException | 插入數(shù)據(jù)(返回值為ID) |
User selectByPrimaryKey(Integer id) thorws SQLException | 按主鍵查詢 |
ListselectByExample(UserExample example) thorws SQLException | 按條件查詢 |
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException | 按條件查詢(包括BLOB字段)。只有當(dāng)數(shù)據(jù)表中的字段類型有為二進(jìn)制的才會(huì)產(chǎn)生 |
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的逆向工程中會(huì)生成實(shí)體類及實(shí)體類對(duì)應(yīng)的example類,example類用于添加條件,相當(dāng)where后面的部分。
xxxExample example = new xxxExample(); Criteria criteria = new Example().createCriteria();
example類中的部分常用方法及功能如下:
方法 | 功能說明 |
example.setOrderByClause(“字段名 ASC”); | 添加升序排列條件,DESC為降序 |
example.setDistinct(false) | 去除重復(fù),boolean型,true為選擇不重復(fù)的記錄 |
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中包含一個(gè)static的內(nèi)部類Criteria,Criteria中的方法是定義SQL 語句where后的查詢條件。
三、小結(jié)一下
XxxExample.java只能實(shí)現(xiàn)簡(jiǎn)單條件增刪改查,復(fù)雜的功能還需要自己編寫sql代碼來實(shí)現(xiàn)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中不定長(zhǎng)參數(shù)的實(shí)例用法
在本篇文章里小編給大家分享的是關(guān)于java中不定長(zhǎng)參數(shù)的使用方法以及相關(guān)代碼內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2020-02-02Java?多個(gè)文件生成zip包、下載zip包的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java?多個(gè)文件生成zip包、下載zip包,包括文件上傳,文件下載,多個(gè)文件打成zip包的操作代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01SMBMS超市訂單管理系統(tǒng)的網(wǎng)站源碼
這篇文章主要介紹了SMBMS超市訂單管理系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05gradle項(xiàng)目中資源文件的相對(duì)路徑打包技巧必看
這篇文章主要介紹了gradle項(xiàng)目中資源文件的相對(duì)路徑打包技巧必看篇,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用PageHelper插件實(shí)現(xiàn)Service層分頁
這篇文章主要為大家詳細(xì)介紹了使用PageHelper插件實(shí)現(xiàn)Service層分頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能(最新推薦)
這篇文章主要介紹了SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能,本文通過示例代碼給大家介紹非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06關(guān)于servlet向mysql添加數(shù)據(jù)時(shí)中文亂碼問題的解決
最近在工作中遇到一個(gè)小問題,出現(xiàn)了中文亂碼的問題,無奈只能想辦法解決,下面這篇文章主要給大家介紹了關(guān)于servlet向mysql添加數(shù)據(jù)時(shí)中文亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08兩個(gè)例子了解java中的回調(diào)機(jī)制
這篇文章主要介紹了Java中回調(diào)機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-02-02java獲取當(dāng)前日期和時(shí)間的二種方法分享
這篇文章主要介紹了java獲取當(dāng)前日期和時(shí)間的二種方法,需要的朋友可以參考下2014-03-03