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!
java database persism mysql mariadb maven
Commentami!