[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder

Anfrage

Stichprobe

Angenommen, Sie haben die folgende Tabelle "Geschäfte"

shop_cd name
0001 Hauptgeschäft
0002 Wörterbuchspeicher
0003 Bunko-Laden
0004 Bilderbuchladen

Ich möchte eine Liste der Geschäfte durch Angabe von "WHERE shop_cd IN (0001, 0002)".

Klasse, die Daten enthält

@Getter
@Setter
public class Shop {
  private String shopCd;
  private String name;
}

Mapper

public interface ShopMapper {
  /**
   *Erhält eine Liste der Geschäftscodes und gibt eine Liste der Geschäfte zurück
   */
  @SelectProvider(type = SqlProvider.class, method = "selectByShopCodes")
  List<Shop> selectByShopCodes(List<String> shopCodes);

  class SqlProvider {
    public String selectByShopCodes(List<String> shopCodes) {
      final String inParams = getInPhraseParamString(shopCodes, "shopCodes");
      SQL sql = new SQL() {
        {
          SELECT("*");
          FROM("shops");
          WHERE(String.format("shops.shop_cd IN (%s)", inParams));
          ORDER_BY("shop_cd ASC");
        }
      };
      return sql.toString();
    }

    /**
     *Erhalten Sie die Liste und IN()Gibt die in der Klausel verwendete Parameterzeichenfolge zurück
     *Beispiel: #{shopCodes[0]}, #{shopCodes[1]}, #{shopCodes[2]}
     */
    private String getInPhraseParamString(List<String> values, String paramName) {
      String paramString = "";
      int i = 0;
      for (String value : values) {
        if (i != 0) {
          paramString += ",";
        }
        paramString += String.format("#{%s[%s]}", paramName ,i);
        i++;
      }
      return paramString;
    }
  }
}

Tipps

Recommended Posts

[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
[JAVA] [Spring] [MyBatis] Verwenden Sie GROUP BY in SQL Builder
Verwenden Sie Ungleichheitsvergleichsoperatoren in MyBatis SQL
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwenden Sie Interceptor im Frühjahr
Verwenden Sie OpenCV mit Java
Verwenden Sie PreparedStatement in Java
Codieren Sie Abfrageparameter im Frühjahr mit Uri Components Builder
Verwenden Sie Lambda-Ebenen mit Java
Java-Konfiguration mit Spring MVC
Verwenden von Mapper mit Java (Spring)
Verwenden Sie Spring JDBC mit Spring Boot
Verwenden Sie SpatiaLite mit Java / JDBC
Aufrufen und Verwenden der API in Java (Spring Boot)
Verwendung des Java-Aufzählungstyps (Enum) in Mapper XML von MyBatis
Verwenden Sie thymeleaf3 mit parent, ohne Spring-Boot-Starter-Parent in Spring Boot anzugeben
Verwendung derselben Mapper-Klasse in mehreren Datenquellen mit Spring Boot + MyBatis
Wie man Lombok im Frühling benutzt
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Morphologische Analyse in Java mit Kuromoji
Verwenden Sie den Konstruktor mit Argumenten in cucumber-picocontainer
Verwenden Sie Microsoft Graph mit Standard-Java
Verwenden wir Twilio in Java! (Einführung)
Verwenden Sie Azure Bing SpellCheck mit Java
Verwenden Sie JDBC mit Java und Scala.
[Java] Verwenden Sie nicht "+" im Anhang!
Verwenden Sie zusammengesetzte Schlüssel in Java Maps.
Verwenden Sie Java 11 mit Google Cloud-Funktionen
Wie verwende ich Klassen in Java?
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Tweak Markdown mit Java Flexmark-Java
Verwenden Sie Stream in Java?
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 2-Programmierung)
Parallelitätsmethode in Java mit grundlegendem Beispiel
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Verwenden Sie "Rhino", das JavaScript in Java ausführt
Verwenden Sie die DynamoDB-Abfragemethode mit Spring Boot
[JaCoCo (Java Code Coverage)] Verwendung mit NetBeans
Lesen Sie die xlsx-Datei in Java mit Selenium
Frühling Java
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Verwenden Sie Spring Security JSP-Tags mit FreeMarker
Behandeln Sie große JSON mit Java Lambda
[Java Spring MVC] Ich möchte DI in meiner eigenen Klasse verwenden
[* Java *] Ich habe am JJUG CCC 2019 Spring teilgenommen
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
Verwenden Sie JDBC Manager mit den Einstellungen in jdbc.dicon.
Testen Sie den Controller mit Mock MVC im Spring Boot
Asynchrone Verarbeitung mit regelmäßiger Ausführung in Spring Boot
Bis zur Datenerfassung mit Spring Boot + MyBatis + PostgreSQL
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Erstellen Sie eine CSR mit erweiterten Informationen in Java
Überarbeitetes GUI-Tool, das 2016 mit Java8 + JavaFX erstellt wurde
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 1-Build) (OpenCV-3.4.4)
Verwendung des eingebauten h2db mit Federstiefel
Mit Tomcat können Sie Platzhalter ($ {...}) in web.xml verwenden.
Tests mit @Parameters in Spring 4.3 sollten keine Parameter haben
Verwendung des Java-Frameworks mit AWS Lambda! ??