Java中mybatis關(guān)于example類的使用詳解
這幾天剛接觸example,很多內(nèi)容都是破碎的,寫一篇博文加深理解。
一、什么是example類
mybatis-generator會為每個字段產(chǎn)生如上的Criterion,如果表的字段比較多,產(chǎn)生的Example類會十分龐大。理論上通過example類可以構(gòu)造你想到的任何篩選條件。在mybatis-generator中加以配置,配置數(shù)據(jù)表的生成操作就可以自動生成example了。具體配置可以參考MBG有關(guān)配置。
下面是mybatis自動生成example的使用。
二、了解example成員變量
//升序還是降序
//參數(shù)格式:字段+空格+asc(desc)
protected String orderByClause;
//去除重復(fù)
//true是選擇不重復(fù)記錄
protected boolean distinct;
//自定義查詢條件
//Criteria的集合,集合中對象是由or連接
protected List<Criteria> oredCriteria;
//內(nèi)部類Criteria包含一個Cretiron的集合,
//每一個Criteria對象內(nèi)包含的Cretiron之間
//是由AND連接的
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
//是mybatis中逆向工程中的代碼模型
protected abstract static class GeneratedCriteria
{…..}
//是最基本,最底層的Where條件,用于字段級的篩選
public static class Criterion {……}
三、example使用前的準備
比如我的example是根據(jù)user表生成的,UserMapper屬于dao層,UserMapper.xml是對應(yīng)的映射文件
UserMapper接口:
long countByExample(CompetingStoreExample example); List<CompetingStore> selectByExample(CompetingStoreExample example);
在我們的測試類里:
UserExample example = new UserExample(); UserExample.Criteria criteria = example.createCriteria();
四、查詢用戶數(shù)量
long count = UserMapper.countByExample(example);
類似于:select count(*) from user
五、where條件查詢或多條件查詢
example.setOrderByClause("age asc");//升序
example.setDistinct(false);//不去重
if(!StringUtils.isNotBlank(user.getName())){
Criteria.andNameEqualTo(user.getName());
}
if(!StringUtils.isNotBlank(user.getSex())){
Criteria.andSexEqualTo(user.getSex());
}
List<User> userList=userMapper.selectByExample(example);
類似于:select * from user where name={#user.name} and sex={#user.sex} order by age asc;
UserExample.Criteria criteria1 = example.createCriteria();
UserExample.Criteria criteria2 = example.createCriteria();
if(!StringUtils.isNotBlank(user.getName())){
Criteria1.andNameEqualTo(user.getName());
}
if(!StringUtils.isNotBlank(user.getSex())){
Criteria2.andSexEqualTo(user.getSex());
}
Example.or(criteria2);
List<User> userList=userMapper.selectByExample(example);
類似于:select * from user where name={#user.name} or sex={#user.sex} ;
六、模糊查詢
if(!StringUtils.isNotBlank(user.getName())){
criteria.andNameLIke(‘%'+name+'%');
}
List<User> userList=userMapper.selectByExample(example);
類似于:
select * from user where name like %{#user.name}%
七、分頁查詢
int start = (currentPage - 1) * rows; //分頁查詢中的一頁數(shù)量 example.setPageSize(rows); //開始查詢的位置 example.setStartRow(start); List<User> userList=userMapper.selectByExample(example);
類似于:
select * from user limit start to rows
到此這篇關(guān)于Java中mybatis中關(guān)于example類的使用詳解的文章就介紹到這了,更多相關(guān)Java mybatis中example類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)組中的元素刪除并實現(xiàn)向前移的代碼
這篇文章主要介紹了Java數(shù)組中的元素刪除并實現(xiàn)向前移的代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05
SpringBoot實現(xiàn)API接口多版本支持的示例代碼
這篇文章主要介紹了SpringBoot實現(xiàn)API接口多版本支持的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
使用SpringBoot簡單實現(xiàn)一個蘋果支付的場景
這篇文章主要為大家詳細介紹了如何在Spring?Boot項目中集成Apple?Pay功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
SpringBoot運行時修改定時任務(wù)Cron表達式的實現(xiàn)方案
在項目開發(fā)中,定時任務(wù)是一個常見的需求,SpringBoot通過@Scheduled注解提供了簡便的定時任務(wù)實現(xiàn)方式,但默認情況下,一旦應(yīng)用啟動,定時任務(wù)的Cron表達式就無法動態(tài)調(diào)整,本文將介紹如何在SpringBoot應(yīng)用運行期間動態(tài)修改定時任務(wù)的Cron表達式,需要的朋友可以參考下2025-06-06
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)的相關(guān)資料,需要的朋友可以參考下2016-06-06

