欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis Example Criteria like 模糊查詢問題

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

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

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

簡介

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

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

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

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

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

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

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

Criteria類

Criteria內(nèi)部類包括每個(gè)字段的andXXX方法,以及每個(gè)標(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)用中傳入的值。代碼不會(huì)添加所需的’%’,您必須自己在方法調(diào)用中傳入的值中設(shè)置該值。
NOT LIKE意味著相關(guān)列必須“不喜歡”方法調(diào)用中傳入的值。代碼不會(huì)添加所需的’%’,您必須自己在方法調(diào)用中傳入的值中設(shè)置該值。
BETWEEN意味著相關(guān)列必須“在”方法調(diào)用中傳入的兩個(gè)值之間。
NOT BETWEEN意味著相關(guān)列必須“不在”方法調(diào)用中傳入的兩個(gè)值之間。
IN表示相關(guān)列必須是方法調(diào)用中傳入的值列表之一。
NOT IN表示相關(guān)列不能是方法調(diào)用中傳入的值列表之一。

簡單實(shí)例

生成簡單的WHERE子句

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

或者

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

實(shí)際上動(dòng)態(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);

實(shí)際上動(dòng)態(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。

模糊查詢實(shí)戰(zhàn)

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

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

? ? ? ? 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é)

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

相關(guān)文章

  • Spring Boot2.X國際化文件編寫配置

    Spring Boot2.X國際化文件編寫配置

    這篇文章主要介紹了Spring Boot2.X國際化文件編寫配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • binarySearch在java的查找實(shí)例用法

    binarySearch在java的查找實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于binarySearch在java的查找實(shí)例用法,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • mybatisplus邏輯刪除基本實(shí)現(xiàn)和坑點(diǎn)解決

    mybatisplus邏輯刪除基本實(shí)現(xiàn)和坑點(diǎn)解決

    這篇文章主要介紹了mybatisplus邏輯刪除基本實(shí)現(xiàn)和坑點(diǎn)解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java多線程Synchronized實(shí)現(xiàn)可見性原理解析

    java多線程Synchronized實(shí)現(xiàn)可見性原理解析

    這篇文章主要介紹了java多線程Synchronized實(shí)現(xiàn)可見性原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 分析ABA問題的本質(zhì)及其解決辦法

    分析ABA問題的本質(zhì)及其解決辦法

    CAS的全稱是compare and swap,它是java同步類的基礎(chǔ),java.util.concurrent中的同步類基本上都是使用CAS來實(shí)現(xiàn)其原子性的。本文將介紹ABA問題的本質(zhì)及其解決辦法。
    2021-06-06
  • ThreadPoolExecutor核心線程數(shù)和RocketMQ消費(fèi)線程調(diào)整詳解

    ThreadPoolExecutor核心線程數(shù)和RocketMQ消費(fèi)線程調(diào)整詳解

    這篇文章主要介紹了ThreadPoolExecutor核心線程數(shù)和RocketMQ消費(fèi)線程調(diào)整詳解,Rocketmq 消費(fèi)者在高峰期希望手動(dòng)減少消費(fèi)線程數(shù),通過DefaultMQPushConsumer.updateCorePoolSize方法可以調(diào)用內(nèi)部的setCorePoolSize設(shè)置多線程核心線程數(shù),需要的朋友可以參考下
    2023-10-10
  • java中a=a+1和a+=1的區(qū)別介紹

    java中a=a+1和a+=1的區(qū)別介紹

    這篇文章主要介紹了java中a=a+1和a+=1的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java怎樣動(dòng)態(tài)獲取泛型參數(shù)的類型

    java怎樣動(dòng)態(tài)獲取泛型參數(shù)的類型

    在Java中,泛型信息在編譯時(shí)會(huì)被擦除,但可以通過特定API獲取運(yùn)行時(shí)的泛型參數(shù)類型,主要API包括Class的getGenericSuperclass()和getGenericInterfaces()方法,以及ParameterizedType的getActualTypeArguments()方法
    2024-09-09
  • 詳解Java中的BigDecimal

    詳解Java中的BigDecimal

    這篇文章主要介紹了Java中的BigDecimal的使用方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • Java實(shí)現(xiàn)克魯斯卡爾算法的示例代碼

    Java實(shí)現(xiàn)克魯斯卡爾算法的示例代碼

    克魯斯卡爾算法是一種用于求解最小生成樹問題的貪心算法。這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)克魯斯卡爾算法的方法,需要的可以參考一下
    2023-04-04

最新評(píng)論