<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 擴展Example類 在某些情況下可能需要擴展自動生成的example。您可能希望添加特定數據庫查詢條件(如Oracle ROWNUM支持),或添加除自動生成外的查詢條件(如不區分大小寫查詢)。在這種情況下,您需要擴展自動生成example類來添加這些額外的查詢條件。 ## 一般原則 MyBatis Generator (MBG)一般情況下一個表名對應一個自動生成"example"類,除非您特殊配置。"example"類動態生成where條件被用于`xxxByExample`方法。 標準的"example"類包含只是標準SQL條件查詢功能。在這種情況下,程序特定需要您添加額外條件查詢功能。這可能需要添加非標準條件查詢或在where條件中使用數據庫特定功能。 自動生成"example"類中包含一個內部類實現where條件查詢功能。內部類命名為`GeneratedCriteria`。 MBG同時也生成了內部類`Criteria`繼承了`GeneratedCriteria`,您可以使用它在example類中添加您想要的功能。Eclipse插件不會刪除`Criteria`類新增代碼(注:只有Eclipse插件,并且有注釋和時間戳等要求才能自動合并),因此您無需擔心新增代碼丟失。 例如,有一個表叫CUSTOMER。通常,MBG生成一個名為 `CustomerExample`的類。在`CustomerExample`類中添加額外功能,需要在`CustomerExample.Criteria`類中新增方法。 ## 擴展vs插件 如果您經常擴展自動生成類,寫一個插件來實現該功能比手工編寫擴展類代碼更方便。下面(標題"單條件參數")的插件類能夠完成單參數查詢 `org.mybatis.generator.plugins.CaseInsensitiveLikePlugin`。 ## 添加條件語句 MBG自動生成SQL在運行允許創建無限制where條件。為了完成這個,自動生成SQL支持四大類型條件語句。對應每種類型的SQL語句,`GeneratedCriteria` 內部有一個對應的方法用于添加一個動態的where條件。 ### 1\. 簡單字符串替換 在使用這種類型的條件查詢時不需要參數對象替換where條件中。例如: `FIRST_NAME is null` `LAST_NAME is not null` 此條件語句`GeneratedCriteria`類方法是: ???`addCriterion(String anyString)` 其中"anyString"是字符串替換where子句。該方法適合任何類型。 例如,您想使用SOUNDEX函數完成"類似"搜索功能。在MySQL中,條件語句應該是: `SOUNDEX(FIRST_NAME) = SOUNDEX('frod')` 此種查詢太復雜,可以考慮使用另外一個方法,這種簡單字符串替換必須插入到where條件中。在內部類`Criteria`中添加如下方法: ``` public Criteria andFirstNameSoundsLike(String value) { StringBuffer sb = new StringBuffer("SOUNDEX(FIRST_NAME) = SOUNDEX('"); sb.append(value); sb.append("')"); addCriterion(sb.toString()); return this; } ``` 下面代碼是在`selectByExample`方法中使用了剛才新增的方法: ``` CustomerExample example = new CustomerExample(); Criteria criteria = example.createCriteria(); criteria.andFirstNameSoundsLike("frod"); List results = selectByExample(example); ``` 這種方法可以添加任何條件語句到where子句中。然而,由于需要保證不同數據類型的正確(最明顯的日期、時間和時間戳),所以最好使用參數替換。同時, 這樣操作暴露過多的方法會導致SQL注入問題。如果可能,我們建議使用下面列出的方法之一。 ### 2\. 單條件參數 使用這種類型作為條件語句,一個參數替換where條件。例如 `FIRST_NAME = ?` `LAST_NAME &lt;&gt; ?` 自動生成`Criteria`類條件方法如下: ???`addCriterion(String anyString,Object anyObject,String propertyName)` Where: **anyString** 替換where條件參數子句,如:upper(FIRST_NAME) like **anyObject** 條件值 **propertyName** 條件列名,用于排除潛在錯誤。 該方法用于單一參數where條件。 例如,假設您想特定列不區分大小寫查詢,在MySQL中查詢條件如下: `upper(FIRST_NAME) like ?` 此方法適合單個參數功能-一個參數一個參數值。將下面方法添加到`ExtendedCriteria`中: ``` public ExtendedCriteria andFirstNameLikeInsensitive(String value) { addCriterion("upper(FIRST_NAME) like", value.toUpperCase(),"firstName"); return this; } ``` 下面代碼是在`selectByExample`方法中使用了剛才新增的功能: ``` ExtendedExample example = new ExtendedExample(); ExtendedCriteria criteria = (ExtendedCriteria) example.createCriteria(); criteria.andFirstNameLikeInsensitive("fred%"); List results = selectByExample(example); ``` ### 3\. 列表條件 列表條件適用于where條件中多個值的情況。例如: `FIRST_NAME IN (?,?,?)` `LAST_NAME NOT IN (?,?,?,?)` 由于包含了"in" and "not in"這樣的標準查詢條件,因此使用起來不太靈活。然而在`Criteria`類中您會發現有相應的方法,如下: ???`addCriterion(String anyString,List listOfObjects,String propertyName)` Where: **anyString** 替換where條件參數,如:FIRST_NAME IN **listOfObjects** list對象值替換條件值(在list前有一個開始的括號,一個結束括號在list后)。 **propertyName** 條件列名,用戶排除潛在錯誤。 ### 4\. Between條件 Between條件參數適用于where條件特定的格式。例如: `FIRST_NAME BETWEEN ? AND ?` `LAST_NAME NOT BETWEEN ? AND ?` 由于包含了"between" and "not between"這樣的標準查詢條件,因此使用起來不太靈活。然而在`Criteria`類中您會發現有相應的方法,如下: ???`addCriterion(String anyString,Object object1,Object object2,String propertyName)` Where: **anyString** 替換where條件參數,如:FIRST_NAME BETWEEN **object1** 替換where條件第一個參數值(object1后會自帶一個"and"連接詞)。 **object2** 替換where條件第二個參數值(object2前會自帶一個"and"連接詞)。 **propertyName** 條件列名,用戶排除潛在錯誤。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看