[JAVA] Spring5 MVC-Webanwendungsentwicklung mit Visual Studio Code SQL Server-Verbindung

Einführung

Wir werden das in Hello World Creation erstellte Projekt erweitern. Für SQL Server werden die in [hier] erstellte Datenbank und Tabelle (https://qiita.com/t_skri/items/8d69c423042e310434d0) verwendet.

Umgebung

OS:Windows 10 Pro 64bit DB:SQL Server 2019(Cent OS 8 on Hyper-V) Editor:Visual Studio Code 1.42.1 JDK:AdoptOpenJDK 11.0.6+10 x64 Apache Maven:v3.6.3 Apache Tomcat:v9.0.31

Projekterstellung

Ich habe das in Hello World erstellte Projekt nach "D: \ JAVA \ Project \ sqlSample" kopiert und erstellt.

pom.xml Fügen Sie das Repository hinzu, das für den Zugriff auf SQL Server erforderlich ist.

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>${spring.version}</version>
	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>com.microsoft.sqlserver</groupId>
    	<artifactId>mssql-jdbc</artifactId>
    	<version>8.2.1.jre11</version>
    	<scope>runtime</scope>
</dependency>

<dependency>
	<groupId>com.zaxxer</groupId>
	<artifactId>HikariCP</artifactId>
	<version>3.4.2</version>
	<scope>compile</scope>
</dependency>

Die gesamte pom.xml.

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>sqlSample1</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>war</packaging>

 
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>
		<spring.version>5.2.4.RELEASE</spring.version>
        <!-- web.Führen Sie build auch ohne XML aus-->
        <failOnMissingWebXml>false</failOnMissingWebXml>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-context-support</artifactId>
    		<version>${spring.version}</version>
    		<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
    		<groupId>com.microsoft.sqlserver</groupId>
    		<artifactId>mssql-jdbc</artifactId>
    		<version>8.2.1.jre11</version>
    		<scope>runtime</scope>
		</dependency>

		<dependency>
		    <groupId>com.zaxxer</groupId>
		    <artifactId>HikariCP</artifactId>
		    <version>3.4.2</version>
		    <scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.thymeleaf</groupId>
			<artifactId>thymeleaf-spring5</artifactId>
			<version>3.0.11.RELEASE</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-java8time</artifactId>
			<version>3.0.4.RELEASE</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.10</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

Modellerstellung

Erstellen Sie den Teil service, der die Geschäftslogik beschreibt, den Teil persistence, der eine Verbindung zur Datenbank herstellt (eine SQL-Anweisung ausgibt), und die Konfigurationsdatei.

Erstellung der Serviceabteilung

Erstellen Sie einen "Service" -Ordner unter "D: \ JAVA \ Project \ sqlSample \ src \ main \ java \ com \ example". Erstellen Sie einen Konfigurationsordner direkt darunter. Erstellen Sie ServiceConfig.java im Konfigurationsordner.

D:\JAVA\Project\sqlSample\src\main\java\com\example
└─service
    └─config
        └ServiceConfig.java

ServiceConfig.java


package com.example.service.config;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@ComponentScan(basePackages = "com.example.service")
@EnableTransactionManagement
public class ServiceConfig {
	 @Bean
	    public PlatformTransactionManager transactionManager(DataSource dataSource) {
	        DataSourceTransactionManager transactionManager =
	                new DataSourceTransactionManager(dataSource);
	        return transactionManager;
	    }
}

Aufbau einer Persistenzabteilung

Erstellen Sie einen Ordner "Persistenz" unter "D: \ JAVA \ Project \ sqlSample \ src \ main \ java \ com \ example". Erstellen Sie einen Konfigurationsordner, einen Entitätsordner und einen Repository-Ordner direkt darunter. Erstellen Sie PersistenceConfig.java im Konfigurationsordner.

D:\JAVA\Project\sqlSample\src\main\java\com\example
└─persistence
    ├─config
    │ └─PersistenceConfig.java
    ├─entity
    └─repository

PersistenceConfig.java beschreibt die Einstellungen für die Verbindung mit SQL Server.

PersistenceConfig.java


package com.example.persistence.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import com.zaxxer.hikari.HikariDataSource;

@Configuration
@ComponentScan(basePackages = "com.example.persistence.repository")
@PropertySource("classpath:jdbc.properties")
public class PersistenceConfig {
	@Bean
    public DataSource dataSource(@Value("${jdbc.driverClassName}") String driverClassName,
                                 @Value("${jdbc.url}") String url,
                                 @Value("${jdbc.username}") String username,
                                 @Value("${jdbc.password}") String password) {
		HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        dataSource.setMinimumIdle(10);
        dataSource.setMaximumPoolSize(300);
        dataSource.setConnectionInitSql("SELECT 0");

        return dataSource;
    }

    @Bean
    public NamedParameterJdbcTemplate jdbcTemplate(DataSource dataSource) {
        NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
        return jdbcTemplate;
    }
}

Ressourcenabteilung erstellt

Erstellen Sie einen Ordner "resources" unter "D: \ JAVA \ Project \ sqlSample \ src \ main". Erstellen Sie jdbc.properties im Ressourcenordner.

D:\JAVA\Project\sqlSample\src\main
└─resources
  └─jdbc.properties

Beschreibt die Verbindungsinformationen für die Verbindung mit SQL Server.

jdbc.properties


jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://xxx:1433;databaseName=Training01;QuotedID=NO //Geben Sie den Hostnamen oder die IP-Adresse von SQL Server an.
jdbc.username=xxx //Geben Sie den Benutzernamen der Verbindung an.
jdbc.password=xxx //Geben Sie das Kennwort des verbindenden Benutzers an.

WebAppInitializer.java geändert

Fügen Sie PersistenceConfig.class und ServiceConfig.class zu getRootConfigClasses hinzu, damit Modelle für DB-Verbindung und Geschäftslogik verwendet werden können.

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[] {PersistenceConfig.class, ServiceConfig.class};
}

Die gesamte WebAppInitializer.java.

WebAppInitializer.java


package com.example.web.config;

import java.nio.charset.StandardCharsets;

import javax.servlet.Filter;

import com.example.persistence.config.PersistenceConfig;
import com.example.service.config.ServiceConfig;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	/**
     *Gibt Java Config-Klassen für Nicht-Spring-MVC an, z. B. Geschäftslogik.
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {PersistenceConfig.class, ServiceConfig.class};
    }

    /**
     *Gibt die Java Config-Klasse für Spring MVC an.
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {MvcConfig.class};
    }

    /**
     *Geben Sie das URL-Muster für DispatcherServlet an.
     * "/"Durch Angabe empfängt DispatcherServlet alle Anforderungen.
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     *Geben Sie den Servlet-Filter an.
     *Wenn mehrere Filter vorhanden sind, werden sie in der im Array angegebenen Reihenfolge ausgeführt.
     */
    @Override
    protected Filter[] getServletFilters() {
        return new Filter[]{
                new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)};
    }
}

Dies ist die Vorbereitung.

Entitätserstellung

Erstellen Sie eine Entität, die Daten von der Datenbank empfängt.

D:\JAVA\Project\sqlSample\src\main\java\com\example\persistence
└─entity
  └─ProductsMaster.java

ProductsMaster.java


package com.example.persistence.entity;

import lombok.Data;

@Data
public class ProductsMaster {
    private String ProductsCode;
    private String ProductsName;
    private Integer UnitPrice;

    public ProductsMaster() {}

    public ProductsMaster(
        String ProductsCode,
        String ProductsName, 
        Integer UnitPrice
        ) {
            this.ProductsCode = ProductsCode;
            this.ProductsName = ProductsName;
            this.UnitPrice = UnitPrice;
        }   
}

Repository erstellen

Erstellen Sie ein Repository, das eine Verbindung zur Datenbank herstellt und SQL-Anweisungen ausgibt.

D:\JAVA\Project\sqlSample\src\main\java\com\example\persistence
└─repository
  ├─ProductsMasterRepository.java
  └─ProductsMasterRepositoryImpl.java

ProductsMasterRepository.java


package com.example.persistence.repository;

import java.util.List;

import com.example.persistence.entity.ProductsMaster;

public interface ProductsMasterRepository {
	List<ProductsMaster> productsMasterList();
}

ProductsMasterRepositoryImpl.java


package com.example.persistence.repository;

import java.util.List;

import com.example.persistence.entity.ProductsMaster;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class ProductsMasterRepositoryImpl implements ProductsMasterRepository {
	@Autowired
    NamedParameterJdbcTemplate jdbcTemplate;

	@Override
	public List<ProductsMaster> productsMasterList() {
		String strSQL = "SELECT * FROM TB_TestTable ORDER BY ID";

        List<ProductsMaster> pMList = jdbcTemplate.query(strSQL,
                (rs, rowNum) -> new ProductsMaster(
                        rs.getString("ProductsName"),
                        rs.getString("ProductsCode"),
                        rs.getInt("UnitPrice")                 
                        )
                );

        return pMList;
	}
}

Serviceerstellung

Erstellen Sie einen Service, der die Geschäftslogik darstellt. Es ist nicht erforderlich, es in diesem Inhalt zu erstellen, aber ich werde es als Beispiel erstellen.

D:\JAVA\Project\sqlSample\src\main\java\com\example
└─service
  ├─ProductsMasterService.java
  └─ProductsMasterServiceImpl.java

ProductsMasterService.java


package com.example.service;

import java.util.List;

import com.example.persistence.entity.ProductsMaster;

public interface ProductsMasterService {
    List<ProductsMaster> productsMasterList();
}

ProductsMasterServiceImpl.java


package com.example.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.persistence.entity.ProductsMaster;
import com.example.persistence.repository.ProductsMasterRepository;

@Service
public class ProductsMasterServiceImpl implements ProductsMasterService {
	@Autowired
	ProductsMasterRepository productsMasterRepository;

	@Override
	public List<ProductsMaster> productsMasterList() {
		List<ProductsMaster> pMList = productsMasterRepository.productsMasterList();

        return pMList;
	}
}

Formularerstellung

Erstellen Sie einen "Formular" -Ordner unter "D: \ JAVA \ Project \ sqlSample \ src \ main \ java \ com \ example \ web". Erstellen Sie ProductsMasterForm.jave im Formularordner.

D:\JAVA\Project\sqlSample\src\main\java\com\example\web
└─form
  └─ProductsMasterForm.java

ProductsMasterForm.java


package com.example.web.form;

import java.util.List;

import com.example.persistence.entity.ProductsMaster;

import lombok.Data;

@Data
public class ProductsMasterForm {
	private List<ProductsMaster> helloList;
}

Controller erstellen

Erstellen Sie ProductsMasterController.java unter "D: \ JAVA \ Project \ sqlSample \ src \ main \ java \ com \ example \ web \ controller".

D:\JAVA\Project\sqlSample\src\main\java\com\example\web
└─controller
  └─ProductsMasterController.java

ProductsMasterController.java


package com.example.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.service.ProductsMasterService;
import com.example.web.form.ProductsMasterForm;

@Controller
@RequestMapping("/hello")
public class ProductsMasterController {
	@Autowired
	ProductsMasterService productsMasterService;

	@GetMapping("/index")
	public String indexGet(Model model) {
		ProductsMasterForm productsMasterForm = new ProductsMasterForm();
		productsMasterForm.setHelloList(productsMasterService.productsMasterList());

		model.addAttribute("productsMasterForm", productsMasterForm);
		return "productsMasterForm/index";
	}

}

Ansicht erstellen

Erstellen Sie einen Ordner "productsMaster" unter "D: \ JAVA \ Project \ sqlSample \ src \ main \ webapp \ WEB-INF \ templates". Erstellen Sie index.html im Ordner productsMaster.

D:\JAVA\Project\sqlSample\src\main\webapp\WEB-INF\templates
└─productsMaster
  └─index.html

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Spring5 MVC sqlSample01</title>
</head>
<body>
    <h1>Hello Spring Products List</h1>
    <table border="1">
		<thead>
			<tr>
				<th>Produktcode</th>
				<th>Produktname</th>
				<th>Stückpreis</th>
			</tr>
		</thead>
		<tbody>
			<tr th:each="pm : ${productsMasterForm.pmList}" th:object="${pm}">
		    	<td th:text="*{ProductsCode}"></td>
		    	<td th:text="*{ProductsName}"></td>
		        <td th:text="*{UnitPrice}"></td>
			</tr>
		</tbody>
	</table>
</body>
</html>

Kompilieren / Paketieren

Mit dem folgenden Befehl können Sie eine Kriegsdatei kompilieren und erstellen.

mvn package

Funktionsprüfung

Befehlspalette

Tomcat: Add Tomcat Server

Das Dialogfeld zur Auswahl des Tomcat-Ordners wird angezeigt. Wählen Sie den Tomcat-Ordner aus (D: \ JAVA \ Tomcat \ apache-tomcat-9.0.31).

Befehlspalette

Tomcat: Run on Tomcat Server

Das Dialogfeld zur Auswahl der Kriegsdatei wird angezeigt. Wählen Sie die Kriegsdatei (D: \ JAVA \ Project \ SpringSample01 \ target \ sqlSample1-1.0-SNAPSHOT.war) aus, die von "mvn package" erstellt wurde.

Bitte greifen Sie auf "[http: // localhost: 8080 /](http: // localhost: 8080 /)" zu. tomcat4.jpg

Klicken Sie auf sqlSample-1.0-SNAPSHOT.

sqlSample1.jpg

Beim Ändern des Codes → Überprüfen des Vorgangs wurde die in Tomact abgelegte Kriegsdatei nur dann ordnungsgemäß wiedergegeben, wenn sie jedes Mal gelöscht wurde. Ich wünschte, ich könnte eine Hot-Bereitstellung durchführen, ich könnte sie nicht finden.

Diese Beispielquelle

Auf GitHub hochgeladen. https://github.com/t-skri1/SpringSample02

Zusammenfassung

Es ist einfach, aber jetzt ist es eine Web-App. Nächstes Mal werden wir Spring Security integrieren.

Recommended Posts

Spring5 MVC-Webanwendungsentwicklung mit Visual Studio Code SQL Server-Verbindung
Spring Boot2-Webanwendungsentwicklung mit Visual Studio Code SQL Server-Verbindung
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Nutzung 1/3 [Vorbereitung]
Entwicklung von Spring5 MVC-Webanwendungen mit Visual Studio Code Maven-Vorlagenerstellung
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Verwendung 2/3 [Seitenerstellung 1/2]
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Verwendung 3/3 [Seitenerstellung 2/2]
Spring5 MVC-Webanwendungsentwicklung mit Visual Studio-Code Hello World Creation
Spring Boot2-Webanwendungsentwicklung mit Visual Studio Code Hello World-Erstellung
Entwicklung von Spring5 MVC-Webanwendungen mit Visual Studio Code Environment-Konstruktion (Installation von JDK11 / Maven / Tomcat / Visual Studio Code)
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Erstellen Sie eine Java-Programmentwicklungsumgebung mit Visual Studio Code
Erstellung einer Java-Webanwendungsentwicklungsumgebung mit VS-Code (struts2)
Verwenden Sie PlantUML mit Visual Studio Code
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Eine Aufzeichnung zum Einrichten einer Java-Entwicklungsumgebung mit Visual Studio Code
Erleben Sie .NET 5 mit Docker und Visual Studio Code
Erstellen Sie einen Web-API-Server mit Spring Boot
Erste Schritte mit Java-Programmen mit Visual Studio Code
Warum können Sie Java mit Visual Studio Code entwickeln?
Etwa der Ablauf der Entwicklung von Webanwendungen mit Rails.
Memo zur Entwicklung von Webanwendungen mit MVN, Tomcat, JSP / Servlet mit VScode
Die erste WEB-Anwendung mit Spring Boot-Making a Pomodoro Timer-
So erhalten Sie eine leere Anfrage mit Spring Web MVC @RequestBody
Spring Boot-Anwendung, die DB-Verbindungseinstellungen mit Parametern angibt
Java-Konfiguration mit Spring MVC
[Spring Boot] Erstellung von Webanwendungen
Zusammenfassung des Artikels zur Entwicklung von Webanwendungen
Java mit Visual Studio Code
Mit Docker erstellte Webanwendung (1)
Rails-Webserver und Anwendungsserver
Vergleich der WEB-Anwendungsentwicklung mit Rails und Java Servlet + JSP
Verwendung von PlantUML mit Visual Studio Code (erstellt am 30. Oktober 2020)
Erstellen wir eine Buchverwaltungs-Webanwendung mit Spring Boot part1
Lassen Sie uns mit Spring Boot part3 eine Webanwendung für die Buchverwaltung erstellen
Lassen Sie uns mit Spring Boot part2 eine Webanwendung für die Buchverwaltung erstellen
[Wahrscheinlich die einfachste] WEB-Anwendungsentwicklung mit Apache Tomcat + Java Servlet
Was ich aus Java gelernt habe, funktioniert mit Visual Studio Code
Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot
[Spring Boot] Vorsichtsmaßnahmen beim Entwickeln einer Webanwendung mit Spring Boot und beim Ausführen eines Krieges auf einem unabhängigen Tomcat-Server