Connessione a MariaDB con Java e Persism

Mattepuffo's logo
Connessione a MariaDB con Java e Persism

Connessione a MariaDB con Java e Persism

Persism è un ORM per Java molto leggero, e che è in grado di connettersi a diversi db.

Questo perchè in verità dobbiamo indicare noi a quale db collegarsi e quale driver usare.

Quindi, ad esempio, se usiamo MariaDB o MySQL, dobbiamo anche installare il driver JDBC apposito.

Oltre a questo, Persism ha vari meccanismi di auto configurazione.

Partiamo dalle dipendenze, se usate Maven:

        <dependency>
            <groupId>io.github.sproket</groupId>
            <artifactId>persism</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>

Detto ciò, la mia tabella (che si chiama persone) ha i seguenti campi:

  • id
  • nome
  • cognome

Andiamo a creare una classe apposita:

public class Persone {

    private int id;
    private String nome;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

Due cose:

  • la classe si deve chiamare come la tabella; quindi se la chiamate Persona, non funziona
  • ho omesso volontariamente il campo cognome per farvi vedere cosa mi dice in console

Qui il codice Java:

import net.sf.persism.Session;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import static net.sf.persism.Parameters.params;
import static net.sf.persism.SQL.sql;
import static net.sf.persism.SQL.where;

public class Main {

    public static void main(String[] args) {
        try {
            String driver = "com.mysql.cj.jdbc.Driver";
            String dbUrl = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String pwd = "9211";

            Class.forName(driver);

            Connection connection = DriverManager.getConnection(dbUrl, user, pwd);
            Session session = new Session(connection);

            List<Persone> list = session.query(Persone.class, sql("SELECT * FROM persone"));
            for (Persone p : list) {
                System.out.println(p.getNome());
            }

            System.out.println("----------");

            Persone p = session.fetch(Persone.class, sql("SELECT * FROM persone WHERE id = ?"), params(1));
            System.out.println(p.getNome());

            System.out.println("----------");

            List<Persone> list2 = session.query(Persone.class, where(":nome = ?"), params("nuovo"));
            for (Persone p2 : list2) {
                System.out.println(p2.getNome());
            }

        } catch (ClassNotFoundException | SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

}

In console, oltre ai dati, mi dirà anche questo:

WARNING: No property found for column: cognome class: class com.mp.test.Persone

Questo perchè ha anche un meccanismo di auto discovery, e qui ci avvert che non abbiamo mappato un campo.

Enjoy!


Condividi

Commentami!