[Note] Coopération entre Java et DB (basique)

Je me demande si je devrais garder ce que j'ai fait pour moi-même. Ce ne sont que les bases, mais ... Je vous serais reconnaissant de bien vouloir signaler les erreurs ou les points qui devraient être améliorés.

environnement Java 8 MySQL ver 8.0.14

Code de base

Utilisez la classe PreparedStatement au lieu de Statement. Pour empêcher l'injection SQL.

package dbAccess;

import java.sql.*;
import java.util.Scanner;

public class DbAccess_pres_select {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
           /* DB_HOST:DB_PORT/DB_3 NOMs sont définis individuellement
Puisque mysql 8 donne une erreur de fuseau horaire du pilote, écrivez comme suit*/
			Connection con = DriverManager.getConnection(
				"jdbc:mysql://DB_HOST:DB_PORT/DB_NAME?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC",
				"hogeuser",
				"Password"
			);
			String line = new Scanner(System.in).nextLine();

			String sql = "SELECT * FROM employee WHERE nm_employee = ?";

			PreparedStatement stmt = con.prepareStatement(sql);

			//1 est?Affiche le numéro et l'emplacement de.
			stmt.setString(1, line);

			//executeQuery renvoie un type ResultSet. Méthode de recherche
			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				int id = rs.getInt("id");
				String name =rs.getString("name");
				String kana = rs.getString("kana");
				String email = rs.getString("mail");
				String pass = rs.getString("password");
				int idDep = rs.getInt("id_department");

				System.out.println(id + "\t" + name + "\t" + kana +"\t" + email + "\t" + pass + "\t" + idDep);
			}

			stmt.close();
			con.close();
		} catch(ClassNotFoundException e) {
			e.printStackTrace();
		} catch(SQLException e) {
			e.printStackTrace();
		}
	}
}

Pour DML (INSERT, UPDATE, DELETE) autre que SELECT

ʻUtilisez la méthode executeUpdate () `. La valeur de retour est de type int. Renvoie le numéro mis à jour.

//réduction
int i = ps.executeUpdate();
System.out.println("Nombre de mises à jour:" + i);

Autres

~~ Pour obtenir ou déconnecter une instruction ou une connexion, créez une classe Util ou quelque chose et décrivez-la comme une méthode statique. Utilisé dans la classe principale. ~~ => Il n'y a pas de problème s'il s'agit d'un environnement autonome utilisé par une seule personne, mais lorsque vous travaillez côté serveur, utilisez un pool de connexions pour supprimer la génération massive de connexions. (Essayez d'établir une connexion à chaque fois, même dans un environnement autonome.) nkojima Merci pour votre commentaire!

DbUtil.java


import java.sql.*;

public class DbUtil {
Définir 8 avec une chaîne finale statique privée
   "Valeur du nom d'hôte ou adresse IP du serveur local";
   "nom de la base de données";
   "Nom d'utilisateur";
   "password";
   "mysql"; //DB à utiliser
   "com." + DBMS + ".cj.jdbc.Driver"; //chauffeur
   "numéro de port";
   "jdbc:" + DBMS + "://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME + "?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC"; //URL de la base de données

	//Interdiction d'instanciation
	private DbUtil() {
	}

	//Faire de Connection une instance unique
   //S'il est acquis à partir de plusieurs applications, utilisez le pool de connexions.
	private static Connection con;

	//Obtenez une connexion
	public static Connection getConnection() throws ClassNotFoundException, SQLException {
		if (con == null || con.isClosed()) {
			Class.forName(DB_DRIVER);
			con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
		}
		return con;
	}
	
        //Déclaration de déconnexion
	public static void closeStatement(PreparedStatement stmt) throws SQLException {
		if (stmt != null) {
			stmt.close();
		}
	}

	//Déconnecter
	public static void closeConnection(Connection con) throws SQLException {
		if (con != null) {
			con.close();
		}
	}
}

DAO et DTO

Pour la classe ** DAO **

--Constructor (Spécifiez la connexion à la base de données comme argument lors de la création d'une instance DAO)

public EmployeeDAO(Connection con) {
		this.con = con;
}
public List<EmployeeDTO> selectAll() throws SQLException, ClassNotFoundException {
	/*Déclarer et initialiser la liste pour le retour*/
        /*instruction SQL*/
		try {
			/*Exécuter l'instruction SQL et stocker dans la liste*/
		} finally {
			/*déclaration de clôture*/
		}
		return rtnList;
	}
public List<EmployeeDTO> empInsert(Arguments pour les données que vous souhaitez insérer)jette des exceptions{
//Autres méthodes (mise à jour et suppression)

Pour la classe ** DTO **

--Définissez les colonnes de la table DB en tant que champs.

public class EmployeeDTO {
	/**ID d'employé*/
	private int idEmployee;
	/**Nom de l'employé*/
	private String nmEmployee;
	/**Nom de l'employé Kana*/
	private String knEmployee;
	/**adresse mail*/
	private String mailAddress;
	/**mot de passe*/
	private String password;
	/**ID de position*/
	private int idDepartment;

--Créez chaque getter et setter selon vos besoins.

/*Un cas*/
public int getIdEmployee() {
	return idEmployee;
}
public void setIdEmployee(int idEmployee) {
	this.idEmployee = idEmployee;
}

Recommended Posts

[Note] Coopération entre Java et DB (basique)
[Java] Différence entre == et égal
[Java] Différence entre l’affectation d’une variable de type de base et l’affectation d’une variable de type de référence
Différences entre Java "débutant" et Kotlin
Types de données de base et types de référence (Java)
[JAVA] Différence entre abstrait et interface
[Java] Relation entre H2DB et JDBC
[Java] Différence entre array et ArrayList
Types de données de base et types de référence Java
Différences entre Java et .NET Framework
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
[Java] Types d'exception et traitement de base
Remarque: Différence entre Ruby "p" et "met"
Relation entre les modificateurs d'accès kotlin et java
Différence entre final et immuable en Java
[Pour les débutants] Différence entre Java et Kotlin
[Java] Différences entre les variables d'instance et les variables de classe
Connaissance de base de la rédaction de notes de développement Java
Comparaison CRUD de base entre Mybatis et Hibernate
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
HashMap # putAll () se comporte différemment entre Java 7 et Java 8
[Java] Comprendre la différence entre List et Set
Grammaire de base Java
[Java] Résumé personnel des classes et méthodes (basique)
Différence entre next () et nextLine () dans Java Scanner
progate java L1 résumé de base cosole.log, différence entre les variables et les constantes, instruction if
Connaissances de base Java 1
[Java] Structure de base
[Java] [Basic] Glossaire
Résumer les différences entre l'écriture C # et Java
Grammaire de base Java
Java et JavaScript
XXE et Java
Grammaire de base Java
Distinguer les nombres positifs et négatifs en Java
[Java] Différence entre "variable finale" et "objet immuable"
Exercice Java [basique]
[Java] Remarque sur la différence entre le jugement d'équivalence et le jugement d'égalité lors de la comparaison de classes String
[Ruby] Différence entre obtenir et publier
Obtenez le résultat de POST en Java
Veuillez noter la division (division) de java kotlin Int et Int
[Java] Différence entre statique final et final dans les variables membres
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
A propos du type de données de base Java et de la mémoire du type de référence
Conversion entre objets Java et JSON à l'aide de Moshi
[Java débutant] Différence entre la longueur et la longueur () ~ Je ne sais pas ~
Modificateur abstrait Java [Note]
[Java] Notes de l'itérateur interne
Méthode de connexion JAVA DB
Getter et Setter (Java)
[Java] Thread et exécutable
Java vrai et faux
mémo de connaissances de base java
[Java] Comparaison des chaînes de caractères et && et ||
[Java] Type de données ①-Type de base
Mémo simple de JUnit de java