springboot配置了ureport2,模板页创建完了,数据源也配置了,可以通过地址栏http://localhost:8080/ureport/preview?_u=file:模板名的方式直接访问预览界面。
但是如果数据源中有where条件,除了在地址栏拼接这个变量值,还有其他方法传这个值吗?因为通过get方法传值不适用于业务。
还有这个报表界面,有没有其他发放访问,比如说后台代码实现根据这个模板,将sql查找的list集合内容,放入到模板中。但是具体怎么实现呢?
有没有人指导下。
有没有截图明示一下
如下图所示配置数据源名称
:自己定义,随便写,自己能区分就行连接用户名
:数据库用户名连接密码
:数据库密码驱动名称
:和配置文件保持一致连接URL
:和配置文件保持一致
点击“测试连接”,显示连接成功,则配置成功
根据参考资料可以给出以下解决方案:
在spring boot中,可以通过配置bean实现内置数据源。具体代码如下:
@EnableAutoConfiguration
@Configuration
public class UReportConfig implements BuildinDatasource {
@Resource
DataSource dataSource;
/**
* 返回数据源的名称
* @return
*/
@Override
public String name() {
return "内置数据源";
}
@Override
public Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("连接数据源失败!");
}
return null;
}
}
配置数据集主要有两种方式,一种是使用SQL语句查询数据,一种是使用${表达式},也是SQL的形式,用字符串拼接起来。具体代码如下:
public class UreportDataController {
@Resource
private DataSource dataSource;
/**
* 使用${表达式}方式获取报表数据
* @return
* @throws Exception
*/
@RequestMapping("/ureportData")
@ResponseBody
public List<Map<String,Object>> ureportData(@RequestParam Map<String,String> map) throws Exception{
Connection conn = dataSource.getConnection();
String param1 = map.get("param1");//获取前端传递进来的参数
String sql = "select * from table where param1 = '"+param1+"'";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
ResultSetMetaData md = rs.getMetaData();
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
while(rs.next()){
Map<String,Object> map1 = new HashMap<>();
for(int i=1;i<=md.getColumnCount();i++){
map1.put(md.getColumnName(i),rs.getObject(i));
}
list.add(map1);
}
return list;
}
}
在浏览器地址栏输入http://localhost:9999/ureport/designer即可打开报表设计器。
在配置文件中使用以下代码来选择内置数据源。
ureport:
ds:
datasource:
name: 内置数据源
可以使用iframe页面嵌入报表,将外部参数传入报表查询数据即可。具体代码如下:
<iframe id="ureport" style="width: 100%;height: 600px;" scrolling="no" frameborder="0"></iframe>
$(document).on("click","#printBtn",function(){
var param1 = "xxx";//获取打印时需要传递的参数
var url = "/ureport/preview?_u=simple.ureport.xml¶m1=" + param1;//访问的路径
$('#ureport').attr('src', url);
});
可以在报表设计器中,通过下面的步骤进行配置: 1. 在需要进行格式化的单元格上,右键选择"配置条件"。 2. 分别配置超标和未超标单元格格式化的颜色。 3. 条件配置时,若当前值为数值类型,直接填写数值条件即可;若当前的值为字符串类型,值表达式需要在字符串加上单引号。
在浏览器中输入http://localhost:9999/ureport/designer,打开报表设计器,在上面添加模板,然后在代码中获取模板数据并展示在前端页面,在页面中配置需要的功能和内容,通过点击打印按钮打印需要的内容。