Crear reportes en la aplicación jasperStudio y llamarlos desde una aplicación Maven
En internet hay muchos tutoriales enseñando a llamar reportes desde java, pero en todos usan Ant, o son video viejos y aún no existía maven. Por eso te comparto la forma en que yo lo resolví.
Códigos
Dependencias
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.1.0</version>
</dependency>
<dependency>
<groupId>org.netbeans.external</groupId>
<artifactId>AbsoluteLayout</artifactId>
<version>RELEASE90</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.7</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
Librerias
import java.io.InputStream;
import java.sql.Connection;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
Clase que se conecta a la base de datos
package Backend;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConectorJ {
public static final String URL = "jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=false";
public static final String user = "test";
public static final String password = "Contra12-34";
private Connection connection;
public ConectorJ() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
this.connection = (Connection)(DriverManager.getConnection(URL, user, password));
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
public Connection gConnection() {
return this.connection;
}
}
Método que invoca al reporte
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
ConectorJ cj = new ConectorJ();
String reportPath = "src/main/java/Reports/persons.jasper";
try (Connection connection = cj.gConnection()) {
InputStream inputStream = JRLoader.getFileInputStream(reportPath);
JasperPrint jPrint = JasperFillManager.fillReport(inputStream, null, connection);
JasperViewer jViewer = new JasperViewer(jPrint, false);
jViewer.setTitle("Personas registradas");
jViewer.setExtendedState(Frame.MAXIMIZED_BOTH);
jViewer.setVisible(true);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
BASE DE DATOS
CREATE SCHEMA `test`;
USE `test`;
DROP TABLE IF EXISTS `test`.`person`;
CREATE TABLE `test`.`person` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`age` INT NOT NULL,
PRIMARY KEY (`id`));
INSERT INTO `test`.`person` (`name`,`age`) VALUES ('Daniel',19);
INSERT INTO `test`.`person` (`name`,`age`) VALUES ('Saraí',18);
INSERT INTO `test`.`person` (`name`,`age`) VALUES ('Pedrito',21);
INSERT INTO `test`.`person` (`name`,`age`) VALUES ('Andrea',28);
Comentarios
Publicar un comentario