Jasper 本身是不支持动态数据源的,能用的解决方式是通过 api 自定义数据源,实际操作就是根据条件判断后动态设定 jdbc 的 url、用户名及密码等连接属性。比如:

 String userName = userDetails.getUsername();// obtain a connection based on the username.String dataSourceURI = "";if (userName.equalsIgnoreCase("admin")) {dataSourceURI = "/datasources/ds_1";userName = "xx";…}else if{…}connection = getRepositoryDatasource(dataSourceURI);try {parameterValues.put(JRParameter.REPORT_CONNECTION,connection.getDataSource().getConnection());} catch (SQLException sqle){sqle.printStackTrace();}

API 尽管做到了动态数据源, 但过程还是比较复杂的,另外还会导致自定义类与应用间高耦合,后期维护也是挺麻烦的事儿。

如果有集算器,这个问题就很容易处理,比如某业务量较大的企业把每年的数据都分库存放在独立服务器。当按年度查询数据(如订单表)的时候,就要动态的去连对应库。

集算器 SPL 一句话搞定

其中,“connect(dataSource)”为获取数据库连接,“dataSource”为集算器参数,传入哪年就可以获取对应数据库连接。

上面的场景还只是最简单的取数需求,如果涉及到多数据源的混合运算,对于 Jasper 来说就更困难了,甚至没解决方案。这些问题引入集算器都会变的轻松,感兴趣的可以参考:分库后的统计查询。

集算器提供了 JDBC 驱动,可以很方便的与 Jasper 等报表工具集成,详细用法可参考JasperReport 调用 SPL 脚本。

关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。

nacos动态配置数据源_Jasper 怎么配置动态数据源相关推荐

  1. mysql动态配置数据源_Spring整合Mybatis实现动态数据源切换教程配置

    一.摘要 这篇文章将介绍Spring整合Mybatis 如何完成SqlSessionFactory的动态切换的.并且会简单的介绍下MyBatis整合Spring中的官方的相关代码. Spring整合M ...

  2. Spring Boot多数据源配置并通过注解实现动态切换数据源

    文章目录 1. AbstractRoutingDataSource类介绍 2. ThreadLocal类介绍 3. 环境准备 3.1 数据库准备 3.2 项目创建 4. 具体实现 4.1 定义数据源枚 ...

  3. Skywalking+Nacos实现高可用集群和动态配置

    注意:Skywalking启动时路径不可为中文(windows) 环境介绍# 下面是架构图: 软件版本信息: nacos:1.3.0 skywalking:8.5.0 elastcisearch:7. ...

  4. mybatis动态数据源配置(附自定义注解实现数据源切换)

    在做DB数据迁移需求的时候要用到多数据源,正好整理下 实际用到以下几个类 配置文件 #端口 server.port: 8080 spring.application.name: lzqdemo# my ...

  5. jqGrid subGrid配置 如何首次加载动态展开所有的子表格

    有时候需求需要默认加载表格的时候把子表格的数据也显示出来,经过研究相关SubGrids API配置如下: 属性 类型 描述 默认值 subGrid boolean 设置为true启用子表格.如果启用子 ...

  6. JAVA日记之mybatis-2代理开发/动态sql/sql抽取/核心配置标签 ----喝最烈的酒.

    1.Mybatis的Dao层实现 1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao {List<User> findAll() th ...

  7. Ubuntu18.04的网络配置(静态IP和动态IP) - OpsDrip - 博客园

    Ubuntu18.04的网络配置(静态IP和动态IP) - OpsDrip - 博客园

  8. 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )

    文章目录 I . CMake 引入动态库与静态库区别 II . Android Studio 中 CMake 引入动态库流程 III . 指定动态库查找路径 IV . 链接函数库 V . 完整代码示例 ...

  9. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

最新文章

  1. 小冰数字孪生主播正式上线 全球首创全流程无人化AI直播
  2. 光栅尺与PLC的配合使用
  3. Iptables防火墙原理
  4. 充值后的充值金额提交到账户金额中
  5. Python+OpenCV:图像二进制鲁棒独立基本特征(BRIEF, Binary Robust Independent Elementary Features)
  6. 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.3 验证XML文档
  7. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_06.入门案例的流程总结
  8. Flowable 6.6.0 Eclipse设计器 - 2.编辑器特性
  9. 给领导干部讲计算机课的开场,学习计算机课程的心得(1)讲课讲稿.pdf
  10. 张宇基础30讲——第6讲-中值定理
  11. Straight lines have to be straight
  12. cdh cm 大数据系统hadoop快速安装
  13. 用Python实现一个简易的“听歌识曲”demo(一)
  14. python后面空格报错_python空格报错
  15. 树莓派 博通BCM2835芯片手册
  16. mysql启动跳过错误_mysql启动错误
  17. python 画图自定义x轴刻度值
  18. 一场安防IPC模组方案发布会引发的吐槽风波与反思
  19. NOIP 2015 蒟蒻做题记录
  20. 斯坦福大学的产学研之路

热门文章

  1. 计算机竞赛CCC可以直接学吗,CCC 计算机竞赛到底有多牛!
  2. canvas 文字颜色_Canvas技术概述
  3. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)
  4. devServer proxy跨域 设置代理 proxy
  5. html 写一个日志控件 查看log
  6. Linux Test Project 测试套件说明
  7. 极速理解设计模式系列:11.单例模式(Singleton Pattern)
  8. Java String.split()用法小结
  9. 如何独立开发一个网络请求框架
  10. zencoding实践