Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(八)-Mysql資料來源
實現Mysql資料庫連線報表模板輸出
前幾章介紹了以實體類作為報表資料來源進行輸出的案例,這一章講解現在常用的報表資料來源,那就是資料庫,以Mysql資料庫作為資料庫工具。
下載安裝Mysql與Mysql workbench
到官網下載資料庫Mysql,地址連結。
下載好後,直接安裝。安裝過程中會設定root的密碼,一定要記住這個密碼,後面要用到。
安裝完成後,再下載一個數據庫視覺化操作工具,MySql workbench,下載地址。
下載完成後,開啟workbench,新建一個叫sample的資料庫,裡面新建一個student的表,裡面隨便設定一些學生的成績資料。
建立學生成績資料表
sample資料庫建好之後,新建一個student表。
建立欄位,資料結構如下。
輸入學生的各科成績與資訊
在模板配置資料庫作為資料來源
建立一個數據源適配表
選擇DATABASE JDBC Connection
選擇驅動型別為Mysql
輸入連線Mysql資料的賬號與密碼,root是剛才建立學生表資料的帳號。
點選測試後,彈出錯誤對話方塊,說找不到這個驅動類。
這是因為我們還沒設定資料庫連線驅動類的路徑。驅動類可以去官網下載,地址。
我前幾章提供的jar依賴包裡就有這個類,新增路徑依賴。
新增後再點test,依然出了錯。這次是因為我們沒有設定時區,所以資料庫沒有辦法識別時間。
只須將jdbc url:後面加一句時區即可
jdbc:mysql://localhost/sample?serverTimezone=GMT%2b8
這次再來test,結果successful,說明mysql資料庫成功連線上了。
點選Finish,資料來源算配置好了。
將資料庫學生表字段配置到模組中
在outline中右鍵模板,選擇dataset and query
選擇我們剛才建立的資料來源適配。
這時可以看到localhost裡mysql所有的資料庫
到這一步,如果想拖動欄位至右邊是無效果,右邊的那個框是用來寫查詢語句的,這是必不要少的。
完成之後,可以在Field看到資料庫的欄位,接下來只要將它們拖動到對應的位置即可。
檢視預覽,生成了五個表格,資料庫有幾條資料,對應就生成了幾個表格。
Java工程生成資料庫作為資料填充的報表
首先,自然是將我們的模板編譯成二進位制檔案,放入Java工程中。
程式碼如下,附有詳細說明。這裡注意一點,模板並不提供資料庫的連線,模板檔案只提供了一條查詢語句而已,實際的查詢資料庫還是得在程式碼中完成的。
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
public class JasperMysqlDataTest {
public static void main(String[] args) {
try {
// 1.設定模板二進位制檔案路徑,一定要可以通過該路徑找到該檔案
String reportPath = "./src/JasperMysqlSample.jasper";
// 2.建立一個map,裡面不放置任何資料,只是作為一個引數
HashMap<String, Object> map = new HashMap<>();
// 3.建立一個connection,作為填充引數傳入。
// url,模板中連線的url,複製過來即可
String url = "jdbc:mysql://localhost/sample?serverTimezone=GMT%2b8";
// 我們的驅動類,要在依賴包中放置這個驅動包
Class.forName("com.mysql.jdbc.Driver");
// 關鍵的一步,建立一個連線物件,要設定賬號和密碼
Connection conn = DriverManager.getConnection(url, "root", "password");
// 4.通過JasperFillManager工具進行填充報表,填充成功後會生成一個JasperPring檔案,該檔案用於輸出
JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, map, conn);
// 5.設定目標檔案輸出的路徑
String desFilePath = "./src/JasperMysqlTest.html";
// 6.通過JasperExportManager管理工具進行報表輸出文件,此外設定為輸出html檔案
JasperExportManager.exportReportToHtmlFile(jasperPrint, desFilePath);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("發生了錯誤");
e.printStackTrace();
}
}
}
重新整理工程,生成了一個html檔案,預覽,與資料庫資料一致,大功告成。