Spielen Sie Framework2.5 (Java) -Tipps

Ich werde es in meiner Freizeit hinzufügen

Vorsichtsmaßnahmen beim Zuordnen Ihrer eigenen Klasse zu Form

ProductForm.java


public class ProductForm {
    //Eigene Klasse
    public ProductDto productDto;
}

Der folgende Fehler kann auftreten.

[InvalidPropertyException: Invalid property ◯◯ of bean class [△△Form]: Illegal attempt to get property '◯◯' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property '◯◯' of bean class [△△Form]: Could not instantiate property type [□□] to auto-grow nested property path: org.springframework.beans.BeanInstantiationException: Failed to instantiate [□□]: Is it an abstract class?; nested exception is java.lang.InstantiationException: □□]

Es scheint zu passieren, wenn Sie einen Konstruktor mit Argumenten erstellen, ohne einen Konstruktor ohne Argumente zu erstellen. Ich habe einen leeren Konstruktor erstellt und er wurde behoben.

ProductDto.java


public ProductDto() {
  //nichts tun
}

public ProductDto(Product product) {
  this.price = product.price + "Kreis";
}

Holen Sie sich Rekord

//Alle Fälle
List<Product> products = Product.find.all();

//Holen Sie sich in Liste
List<Product> products = Product.find.where().eq("valid_flg", 1).findList();

//Holen Sie sich im Paging-Format findPagedList(Seitennummer,Anzahl der Seiten pro Seite)
PagedList<Product> products = Product.find.findPagedList(1, 20);

//Holen Sie sich mit Primärschlüssel
Product product = Product.find.byId(1L);

//Holen Sie sich die Nummer
int count = Product.find.findRowCount();

//Erwerben Sie nur eine (* Ein Fehler tritt auf, wenn zwei oder mehr zutreffende Daten vorhanden sind)
Product product = Product.find.where().eq("product_code", "123456789").findUnique();

Deduplizierung

Verwenden Sie "setDistinct (true)".

List<Product> products = Product.find.select("category").setDistinct(true).findList();
// select distinct category from m_product;

Bedingungen wie A und (B oder C)

Product.find.where().eq("Bedingung A.")
                    .disjunction()
                      .add(Expr.eq("Bedingung B."))
		              .add(Expr.ilike("Bedingung C."))
                    .findList();

So bauen Sie eine Beziehung auf

In der Modellklasse definiert. Das folgende Beispiel zeigt die Zuordnung der Tabelle m_product und der Tabelle m_season zu N: 1.

※ N:1 Ein Datensatz für eine bestimmte Saison entspricht immer einem Datensatz für ein Produkt. Ein Produkt ist nicht an mehrere Jahreszeiten gebunden. Für einen bestimmten Rekord der ersten Staffel sind mehrere Produkte mit dieser Staffel verbunden. Daher ist die Beziehung von "Produkt: Saison" "N: 1". Erläutern Sie die Beziehung von "Eins-zu-Eins", "Eins-zu-Viele" und "Viele-zu-Viele" auf leicht verständliche Weise

models/Product.java


@ManyToOne
@JoinColumn(name = "season_id", insertable = false, updatable = false)
public Season season;

Definieren Sie "@ ManyToOne" für diejenige, die zu N wird. Definieren Sie dann den externen Schlüssel für den Namen "@ JoinColumn".

models/Season.java


@OneToMany(mappedBy = "season")
public List<Product> productList;

Definieren Sie "OneToMany" für diejenige, die 1 wird. mappedBy entspricht dem Variablennamen des durch @ ManyToOne definierten Feldes.

JPA-Referenz

Join Die Join-SQL wird erstellt, indem der Variablenname der oben definierten Beziehung an die Methode "fetch" übergeben wird.

controllers/ProductListController


List<Product> products = Product.find
                                .fetch("season")
                                .findList();
// select * from m_product t0 left outer join m_season t1 on t1.id = t0.season_id;

@OneToOne @ OneToMany und @ ManyToOne werden verzögert geladen, es sei denn, Sie schreiben explizit Fetch, aber für Eins-zu-Eins-Beziehungen sind sie standardmäßig EAGER-Ladevorgänge.

python


Product p = Product.find.byId(1);
// select * fron m_product t0 left outer join m_product_detail t1 on t0.product_id = t1.id where t1.id = 1;

//Wenn die folgenden Beziehungen mit dem Produktmodell verknüpft sind
// @OneToOne(mappedBy = "productDetail")
// public ProductDetail productDetail;

Verbunden, obwohl Fetch nicht geschrieben ist. Wenn Sie nicht beitreten möchten, geben Sie explizit das verzögerte Laden an.

models/Product.java


@OneToOne(mappedBy = "productDetail", fetch = FetchType.LAZY)
public ProductDetail productDetail;

Alias für Tabellennamen

Die Seriennummern werden standardmäßig in der Reihenfolge ihres Auftretens als t0, t1, t2 ... vergeben. Sie können einen beliebigen Alias mit "Query # alias" festlegen. Die Join-Zieltabelle kann nicht mit "Query # alias" verwendet werden.

controllers/ProductListController


List<Product> products = Product.find
                                .query()
                                .alias("pro")
                                .fetch("season")
                                .findList();
// select * from m_product pro left outer join m_season t1 on t1.id = pro.season_id;

Wenn das Beziehungsziel eine Spalte mit demselben Namen enthält, geben Sie einen Alias an, um das Verständnis zu erleichtern.

controllers/ProductListController


List<Product> products = Product.find
                                .query()
                                .alias("pro")
                                .orderBy("pro.valid_flg desc, pro.updated_at desc")
                                .fetch("season")
                                .findList();
// select * from m_product pro left outer join m_season t1 on t1.id = pro.season_id order by pro.valid_flg desc, pro.updated_at desc;

Session

SampleController.java


session().get("hoge");

session () ist eine Methode der play.mvc.Controller -Klasse. Wenn Sie also von einem anderen als dem Controller aufrufen, ist dies wie folgt.

Http.Context.current().session().get("hoge");

Lesen Sie den in der Einstellungsdatei geschriebenen Wert

Rufen Sie den ursprünglich in application.conf definierten Wert von Java ab.

conf/application.conf


MAIL_ADDRESS = "[email protected]"

Sample.java


import com.typesafe.config.ConfigFactory;

String mailAddress = ConfigFactory.load().getString("MAIL_ADDRESS");

Sie können unter conf eine weitere Datei erstellen und den Dateinamen angeben.

conf/sample.conf


MAIL_ADDRESS = "[email protected]"

Sample.java


import com.typesafe.config.ConfigFactory;

String mailAddress = ConfigFactory.load(ConfigFactory.parseFileAnySyntax(new File("conf/sample.conf"))).getString("MAIL_ADDRESS");

Kann durch Abhängigkeitsinjektion vom Controller aufgerufen werden

SampleController.java


import Play.Configuration

@Inject Configuration configuration

String mailAddress = configuration.getString("MAIL_ADDRESS");

Wechseln Sie die Einstellungsdatei, die für jede Umgebung verwendet werden soll

Standardmäßig wird beim Start application.conf geladen. Durch Angabe der Startoption können Sie die zu lesende Einstellungsdatei ändern.

activator -Dconfig.file=conf/application_local.conf run

Achtung ①

Wenn die in der Option angegebene Datei nicht gefunden wird, wird application.conf fehlerfrei gelesen.

Achtung ②

In der Produktionsumgebung wird "Aktivatorstart" anstelle von "Aktivatorlauf" verwendet, daher ist es erforderlich, dem Schreibstil eine Gewohnheit hinzuzufügen.

activator "start 9000 -Dconfig.file=conf/application_prod.conf" -Dapplication.secret="xxxxxxxx"

Starten Sie im Debug-Modus

activator -jvm-debug 9999 run 

Klicken Sie beim Starten des Servers mit der rechten Maustaste auf den Projektordner in Eclipse Wählen Sie "Debug" → "Debug Configuration". Wählen Sie "Remote Java Application" aus dem Menü auf der linken Seite und wählen Sie Geben Sie "localhost" für den Host und "9999" für den Port ein und drücken Sie Debug.

Dies stoppt am Haltepunkt.

Präfix-URL

Wenn Sie allen Routen ein gemeinsames Präfix hinzufügen möchten, legen Sie es in der application.conf fest.

conf/application.conf


application.context = "/admin"

localhost: 9000 / admin ist der Stamm.



Wenn Sie Fragen oder Kommentare haben, können Sie sich gerne an uns wenden. Ich habe es beim Flattern zusammengestellt, damit es Tippfehler gibt ...

Recommended Posts

Spielen Sie Framework2.5 (Java) -Tipps
Java-Tipps, Tipps
Java-Framework
Java-Tipps
Erstellung der Play Framework 2.6 (Java) -Entwicklungsumgebung
Java-Code-TIPPS
Spielen Sie die Framework-Studie
Java Framework Vergleich
[Java] Sammlungsframework
Spielen Sie die Framework 2.6 (Java) -Umgebungskonstruktion mit Eclipse
Post to Slack von Play Framework 2.8 (Java)
Spielen Sie den Framework-Lerntest
spielen Framework persönliche Notizen
[Entwicklung] Java Framework Vergleich
Lernen von Java Framework # 1 (Mac-Version)
Play Framework Study Memo Database ①
Java-Tipps - Modifikatoren der StataticUtility-Klasse
Java zum Spielen mit Function
Überprüfungshinweise zum Java Collections Framework
Persönliche Notizen des First Play Framework
Java-Tipps - Zusammenfassung der Federausführung
Einführung von Dozer to Play Framework
[Java] Tipps zum Schreiben der Quelle
Validierungsfunktion in Play Framework
[Java] [Play Framework] Bis das Projekt mit Gradle gestartet wird
Berücksichtigung des Java Persistence Framework 2017 (Zusammenfassung) -1
Play Framework Study Memo Database ②Lesen
Überlegungen zum Java Persistence Framework 2017 (6) Ebean
Grundursache für Java Framework Bug
Überlegungen zum Java Persistence Framework 2017 (5) Iciql
Spielen Sie das Framework Study Momo DB Update
Tipps für Java High Level REST-Clients
Doppelte Übermittlung von Maßnahmen mit Play Framework
Berücksichtigung des Java Persistence Framework 2017 (7) EclipseLink
Überlegungen zum Java Persistence Framework 2017 (1)
Spring Framework-Tools für Java-Entwickler
Ich habe das Java-Framework "Quarkus" ausprobiert.
Berücksichtigung des Java Persistence Framework 2017 (8) Hibernate5
Java
Einführung in Java-Tipps GreenMail zu Junit5
Überlegungen zum Java Persistence Framework 2017 (2) Doma2
Java
Tweak Markdown mit Java Flexmark-Java
Unterschiede zwischen Java und .NET Framework
Spielen Sie geplante Framework-Jobs und Crontab
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Erraten Sie das Java Persistence Framework 2017 (3) Reladomo
So installieren Sie Play Framework 2.6 für Mac
Authentifizierungsfunktion mit Play Framework [Zugriffsbeschränkungen]
Verwendung von BootStrap mit Play Framework
Authentifizierungsfunktion mit Play Framework [Registrierung und Authentifizierung]
Spielen Sie RAW-, WAV- und MP3-Dateien in Java ab
Funktionen des Spring Frameworks für Java-Entwickler
Tipps zur Interoperabilität mit Kotlin zum Senden an Java-Entwickler
Spielen Sie Framework, um das Übergeben von Werten zu studieren, und bilden Sie einen Helfer
Elementoperationsmethode in Appium TIPS (Java)