您好,登錄后才能下訂單哦!
Jasper如何配置動態數據源,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
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 一句話搞定
A | B | C | |
---|---|---|---|
1 | =connect(dataSource) | /get dataSource connect | |
2 | =A1.query(“select * from orders”) | /Execution query |
其中,“connect(dataSource)”為獲取數據庫連接,“dataSource”為集算器參數,傳入哪年就可以獲取對應數據庫連接。
上面的場景還只是最簡單的取數需求,如果涉及到多數據源的混合運算,對于 Jasper 來說就更困難了,甚至沒解決方案。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。