Jasperreport+studio设计报表教程(八)--MySQL数据源
转自:https://blog.csdn.net/pigdreams/article/details/60966852
前几章介绍了以实体类作为报表数据源进行输出的案例,这一章讲解现在常用的报表数据源,那就是数据库,以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
- 1
这次再来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();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
刷新工程,生成了一个html文件,预览,与数据库数据一致,大功告成。
m0_71678425: 绝了
许之知否: 好漂亮呀,赞赞赞!
CAT_cwds: 这不是MyBatis自带的分页功能,这是封装的分页功能
零智: 这个要怎么用呀
贼哈哈哈哈: 厉害