最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis Example Criteria like 模糊查詢問題

 更新時間:2023年02月27日 14:26:30   作者:Chandler丶  
這篇文章主要介紹了mybatis Example Criteria like 模糊查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

用Mybatis代碼生成工具會產(chǎn)生很多個XXXExample類,這些類的作用是什么?

查閱了很多資料,在這里總結(jié)歸納一下

簡介

XXXExample類用于構(gòu)造復(fù)雜的篩選條件

它包含一個名為Criteria的內(nèi)部靜態(tài)類,它包含將在where子句中一起結(jié)合的條件列表。

Criteria類的集合允許您生成幾乎無限類型的where子句。

可以使用createCriteria方法或or方法創(chuàng)建Criteria對象。

當(dāng)使用createCriteria方法創(chuàng)建第一個Criteria對象時,它會自動添加到Criteria對象列表中 -

如果不需要其他子句,則可以輕松編寫簡單的Where子句。使用or方法時,Criteria類將添加到所有實例的列表中。

官方建議僅使用or方法創(chuàng)建Criteria類。這種方法可以使代碼更具可讀性。

Criteria類

Criteria內(nèi)部類包括每個字段的andXXX方法,以及每個標(biāo)準(zhǔn)SQL謂詞

包括:

字段方法含義
IS NULL表示相關(guān)列必須為NULL
IS NOT NULL表示相關(guān)列不能為NULL
=(等于)表示相關(guān)列必須等于方法調(diào)用中傳入的值
<>(不等于)表示相關(guān)列不能等于方法調(diào)用中傳入的值
>(大于)表示相關(guān)列必須大于方法調(diào)用中傳入的值
> =(大于或等于)表示相關(guān)列必須大于或等于方法調(diào)用中傳入的值
<(小于)表示相關(guān)列必須小于方法調(diào)用中傳入的值
<=(小于或等于)表示相關(guān)列必須小于或等于方法調(diào)用中傳入的值
LIKE意味著相關(guān)列必須“類似”方法調(diào)用中傳入的值。代碼不會添加所需的’%’,您必須自己在方法調(diào)用中傳入的值中設(shè)置該值。
NOT LIKE意味著相關(guān)列必須“不喜歡”方法調(diào)用中傳入的值。代碼不會添加所需的’%’,您必須自己在方法調(diào)用中傳入的值中設(shè)置該值。
BETWEEN意味著相關(guān)列必須“在”方法調(diào)用中傳入的兩個值之間。
NOT BETWEEN意味著相關(guān)列必須“不在”方法調(diào)用中傳入的兩個值之間。
IN表示相關(guān)列必須是方法調(diào)用中傳入的值列表之一。
NOT IN表示相關(guān)列不能是方法調(diào)用中傳入的值列表之一。

簡單實例

生成簡單的WHERE子句

? TestTableExample example = new TestTableExample();
? example.createCriteria().andField1EqualTo(5);

或者

 TestTableExample example = new TestTableExample();
? example.or().andField1EqualTo(5);

實際上動態(tài)生成的where子句是這樣

where field1 = 5

復(fù)雜查詢

TestTableExample example = new TestTableExample();

? example.or()
? ? .andField1EqualTo(5)
? ? .andField2IsNull();

? example.or()
? ? .andField3NotEqualTo(9)
? ? .andField4IsNotNull();

? List<Integer> field5Values = new ArrayList<Integer>();
? field5Values.add(8);
? field5Values.add(11);
? field5Values.add(14);
? field5Values.add(22);

? example.or()
? ? .andField5In(field5Values);

? example.or()
? ? .andField6Between(3, 7);

實際上動態(tài)生成的where子句是這樣

? ? ?where (field1 = 5 and field2 is null)
? ? ?or (field3 <> 9 and field4 is not null)
? ? ?or (field5 in (8, 11, 14, 22))
? ? ?or (field6 between 3 and 7)

可以通過在任何示例類上調(diào)用setDistinct(true)方法來強(qiáng)制查詢?yōu)镈ISTINCT。

模糊查詢實戰(zhàn)

自己根據(jù)理解配合PageHelper做了一個簡單的多條件模糊查詢加深理解

具體實現(xiàn)如下,支持多個字段的同時搜索

? ? ? ? PageHelper.startPage(pageNum,pageSize);
? ? ? ? TbBrandExample example = new TbBrandExample();
? ? ? ? TbBrandExample.Criteria criteria = example.createCriteria();
? ? ? ? if (tbBrand != null) {
? ? ? ? ? ? if (tbBrand.getName() != null && tbBrand.getName().length()>0) {
? ? ? ? ? ? ? ? criteria.andNameLike("%"+tbBrand.getName()+"%");
? ? ? ? ? ? }
? ? ? ? ? ? if (tbBrand.getFirstChar() != null && tbBrand.getFirstChar().length()>0) {
? ? ? ? ? ? ? ? criteria.andFirstCharLike("%"+tbBrand.getFirstChar()+"%");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? Page<TbBrand> page = (Page<TbBrand>) brandMapper.selectByExample(example);
? ? ? ? return new PageResult((int) page.getTotal(),page.getResult());

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis中TypeHandler使用小結(jié)

    Mybatis中TypeHandler使用小結(jié)

    MyBatis的TypeHandler是一個強(qiáng)大的機(jī)制,它為我們提供了一種靈活的方式來處理Java類型與數(shù)據(jù)庫類型之間的轉(zhuǎn)換,本文主要介紹了Mybatis中TypeHandler使用小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • SpringBoot?@Transactional事務(wù)不生效排查方式

    SpringBoot?@Transactional事務(wù)不生效排查方式

    這篇文章主要介紹了SpringBoot?@Transactional事務(wù)不生效排查方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java獲取當(dāng)前時間的時間戳方法總結(jié)

    Java獲取當(dāng)前時間的時間戳方法總結(jié)

    Java中獲取時間戳的方式有很多種,下面這篇文章主要給大家介紹了關(guān)于Java獲取當(dāng)前時間的時間戳的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • 微服務(wù)Spring?Cloud?Alibaba?的介紹及主要功能詳解

    微服務(wù)Spring?Cloud?Alibaba?的介紹及主要功能詳解

    Spring?Cloud?是一個通用的微服務(wù)框架,適合于多種環(huán)境下的開發(fā),而?Spring?Cloud?Alibaba?則是為阿里巴巴技術(shù)棧量身定制的解決方案,本文給大家介紹Spring?Cloud?Alibaba?的介紹及主要功能,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 一文掌握spring cloud gateway(總結(jié)篇)

    一文掌握spring cloud gateway(總結(jié)篇)

    Spring Cloud Gateway是Spring Cloud的全新項目,該項目是基于Spring 5.0,Spring WebFlux和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的API路由管理方式,本文通過實例代碼總結(jié)介紹spring cloud gateway的相關(guān)知識,感興趣的朋友一起看看吧
    2024-12-12
  • Mybatis配置之<typeAliases>別名配置元素解析

    Mybatis配置之<typeAliases>別名配置元素解析

    這篇文章主要介紹了Mybatis配置之<typeAliases>別名配置元素解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java并發(fā)編程之原子性、可見性、有序性

    java并發(fā)編程之原子性、可見性、有序性

    這篇文章主要給大家分享的是java并發(fā)編程的原子性、可見性和有序性,文章會具體舉例說明,感興趣的小伙伴可以參考一下文章的具體內(nèi)容
    2021-09-09
  • 一文盤點五種最常用的Java加密算法

    一文盤點五種最常用的Java加密算法

    大家平時的工作中,可能也在很多地方用到了加密、解密,比如:支付功能等,所以本文為大家盤點了Java中五個常用的加密算法,希望對大家有所幫助
    2023-06-06
  • SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解

    SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解

    這篇文章主要介紹了SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解,本文介紹的也是生產(chǎn)者消費者的一種實現(xiàn),生產(chǎn)者不必是一個始終在執(zhí)行的線程,它可以是一個接口,接受客戶端的請求,向隊列中插入消息,需要的朋友可以參考下
    2023-07-07
  • Java高級架構(gòu)之FastDFS分布式文件集群詳解

    Java高級架構(gòu)之FastDFS分布式文件集群詳解

    這篇文章主要介紹了Java高級架構(gòu)之FastDFS分布式文件集群詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論

东兰县| 绥芬河市| 红桥区| 海口市| 镇远县| 阳春市| 吉首市| 三门县| 滦平县| 台湾省| 文安县| 甘德县| 井研县| 泰兴市| 临潭县| 得荣县| 长泰县| 榆林市| 沂源县| 海城市| 灌阳县| 河西区| 北碚区| 进贤县| 壤塘县| 奉贤区| 灌阳县| 加查县| 康保县| 枣庄市| 汨罗市| 金阳县| 巧家县| 吐鲁番市| 青神县| 长治市| 如皋市| 江山市| 江津市| 福泉市| 都江堰市|