Jasper如何配置動態(tài)數(shù)據(jù)源,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司是專業(yè)的鄯善網(wǎng)站建設公司,鄯善接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行鄯善網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
Jasper 本身是不支持動態(tài)數(shù)據(jù)源的,能用的解決方式是通過 api 自定義數(shù)據(jù)源,實際操作就是根據(jù)條件判斷后動態(tài)設定 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 盡管做到了動態(tài)數(shù)據(jù)源, 但過程還是比較復雜的,另外還會導致自定義類與應用間高耦合,后期維護也是挺麻煩的事兒。
如果有集算器,這個問題就很容易處理,比如某業(yè)務量較大的企業(yè)把每年的數(shù)據(jù)都分庫存放在獨立服務器。當按年度查詢數(shù)據(jù)(如訂單表)的時候,就要動態(tài)的去連對應庫。
集算器 SPL 一句話搞定
A | B | C | |
---|---|---|---|
1 | =connect(dataSource) | /get dataSource connect | |
2 | =A1.query(“select * from orders”) | /Execution query |
其中,“connect(dataSource)”為獲取數(shù)據(jù)庫連接,“dataSource”為集算器參數(shù),傳入哪年就可以獲取對應數(shù)據(jù)庫連接。
上面的場景還只是最簡單的取數(shù)需求,如果涉及到多數(shù)據(jù)源的混合運算,對于 Jasper 來說就更困難了,甚至沒解決方案。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。