一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java中JFinal框架動態切換數據庫的方法

Java中JFinal框架動態切換數據庫的方法

2021-08-26 11:32Mongo_Z Java教程

這篇文章主要介紹了Java中JFinal框架動態切換數據庫的方法,本文通過兩種方法結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求:需要根據企業ID切換對應的數據庫,同時,后期可動態增加數據庫配置

JFinal框架中對于對于多數據源配置有兩種方式:
1.通過配置文件配置,有多少數據庫就要配置多少,服務啟動時加載所有數據庫,缺點:不能動態增加數據庫
2.只配置一個主數據庫信息就可以了,其他數據庫信息保存在表中,通過讀取表數據加載數據庫連接,優點:在數據表中增加數據庫配置即可動態增加數據庫連接。

本次主要介紹第2種方法:

一、新建數據表:保存數據庫連接信息

Java中JFinal框架動態切換數據庫的方法

配置表對應的實體類

  1. public class DbDto {
  2. /**
  3. * 企業ID
  4. */
  5. private String comp_id;
  6. /**
  7. * 企業名稱
  8. */
  9. private String comp_name;
  10. /**
  11. * 企業數據庫名
  12. */
  13. private String dbname;
  14. /**
  15. * 連接地址(ip + 端口號)
  16. */
  17. private String dbhost;
  18. /**
  19. * 用戶名
  20. */
  21. private String dbuser;
  22. /**
  23. * 用戶密碼
  24. */
  25. private String dbpwd;
  26. /**
  27. * 表名前綴
  28. */
  29. private String prefix;
  30. /**
  31. * 編碼類型
  32. */
  33. private String charset;
  34. /**
  35. * 默認庫(1:是 0:不是)
  36. */
  37. private String is_default;
  38.  
  39. }

二、切換數據庫公共方法,根據企業ID切換對應的數據庫(需要依賴druid)

  1. /**
  2. * 根據企業ID查詢對應數據庫
  3. *
  4. * @param compId 企業ID
  5. * @return 數據庫配置名
  6. * @throws Exception 返回處理異常
  7. */
  8. public static String chooseDbByCompId(String compId) throws Exception{
  9. //企業ID為空時,默認使用主數據庫
  10. if (StringUtils.isBlank(compId)){
  11. return SYS_TABLE.MASTER_DB;
  12. }
  13. DbDto dbDto;
  14. try {
  15. //查詢Redis緩存的compId對應的數據庫配置信息
  16. String jsonStr = RedisClient.getString(SYS.REDIS_COMP_DB + compId);
  17. if (StringUtils.isNotBlank(jsonStr)){
  18. dbDto = JSONObject.parseObject(jsonStr, DbDto.class);
  19. }else {
  20. //緩存不存在,查詢數據庫
  21. Record dbRecord = Db.use(SYS_TABLE.MASTER_DB).findFirst("select * from 配置表 where comp_id = ? ", compId);
  22. //parseObject方法是自己封裝的Record轉實體類方法,在前面的文章有寫過,也是在這個工具類中
  23. dbDto = parseObject(dbRecord, DbDto.class);
  24. //加入緩存
  25. if (dbDto != null){
  26. RedisClient.setString(SYS.REDIS_COMP_DB + compId, JSONObject.toJSONString(dbDto));
  27. }
  28. }
  29. if (dbDto == null){
  30. logger.info("切換數據庫失敗,企業不存在或無對應數據庫配置!");
  31. return null;
  32. }
  33. //是否已存在該數據庫連接
  34. if (DbKit.getConfig(dbDto.getDbname()) == null){
  35. //創建數據庫連接
  36. DruidPlugin plugin = new DruidPlugin("jdbc:mysql://" + dbDto.getDbhost()+ "/"+dbDto.getDbname(), dbDto.getDbuser(), dbDto.getDbpwd());
  37. plugin.start();
  38. ActiveRecordPlugin arp= new ActiveRecordPlugin(dbDto.getDbname(), plugin);
  39. arp.start();
  40. }
  41. }catch (Exception e){
  42. logger.error("捕獲異常: 切換數據庫失敗!", e);
  43. return null;
  44. }
  45. return dbDto.getDbname();
  46. }

這樣根據參數compId即可動態選擇參數對應的數據庫(CommonUtil是我封裝這個方法的工具類)

  1. Db.use(CommonUtil.chooseDbByCompId(compId)).find(“”);

到此這篇關于Java中JFinal框架動態切換數據庫的方法的文章就介紹到這了,更多相關JFinal框架動態切換數據庫內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_44157394/article/details/115008452

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
主站蜘蛛池模板: 大胆人gogo888体艺术在线 | 调教小荡娃h | 风间由美理论片在线观看 | 无套插入 | 久久偷拍国2017的 | 成年极品漫画在线观看 | 性夜影院爽黄A爽免费动漫 性色欲情网站IWWW九文堂 | 精品免费久久久久久成人影院 | 午夜亚洲国产 | 青青草在观免费 | 色综合网亚洲精品久久 | 日韩欧美一区黑人vs日本人 | 日本高清视频在线的 | 亚洲咪咪| 3x免费高清视频 | 成人1234| 毛片网站大全 | 毛毛片在线 | 日韩porn | caoporn草棚在线视频 | 插得好爽 | 我半夜摸妺妺的奶C了她 | 亚洲国产精品一区二区久久 | 天天草天天| 久久99re2热在线播放7 | 2021最新国产成人精品免费 | 秋霞鲁丝影院久久人人综合 | 香蕉国产成版人视频在线观看 | 午夜福利合集1000在线 | 91麻豆网址 | 美女胸又大又黄又www小说 | 狠狠色综合久久婷婷 | 九九九国产视频 | 国产亚洲精品一区二区在线播放 | 九九九精品视频 | 91精品国产一区 | 亚洲激情欧美 | 24adc年龄18岁欢迎大驾光临 | 骚虎网站在线观看 | 青草免费在线观看 | 青青在线香蕉国产精品 |