iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中JFinal框架动态切换数据库的方法
  • 295
分享到

Java中JFinal框架动态切换数据库的方法

2024-04-02 19:04:59 295人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

需求:需要根据企业ID切换对应的数据库,同时,后期可动态增加数据库配置 JFinal框架中对于对于多数据源配置有两种方式: 1.通过配置文件配置,有多少数据库就要配置多少,服务启动时

需求:需要根据企业ID切换对应的数据库,同时,后期可动态增加数据库配置

JFinal框架中对于对于多数据源配置有两种方式:
1.通过配置文件配置,有多少数据库就要配置多少,服务启动时加载所有数据库,缺点:不能动态增加数据库
2.只配置一个主数据库信息就可以了,其他数据库信息保存在表中,通过读取表数据加载数据库连接,优点:在数据表中增加数据库配置即可动态增加数据库连接。

本次主要介绍第2种方法:

一、新建数据表:保存数据库连接信息

数据库配置表.png

配置表对应的实体类


public class DbDto {
  
  private String comp_id;
  
  private String comp_name;
  
  private String dbname;
  
  private String dbhost;
  
  private String dbuser;
  
  private String dbpwd;
  
  private String prefix;
  
  private String charset;
  
  private String is_default;

}

二、切换数据库公共方法,根据企业ID切换对应的数据库(需要依赖druid)



  public static String chooseDbByCompId(String compId) throws Exception{
    //企业ID为空时,默认使用主数据库
    if (StringUtils.isBlank(compId)){
      return SYS_TABLE.MASTER_DB;
    }
    DbDto dbDto;
    try {
      //查询Redis缓存的compId对应的数据库配置信息
      String JSONStr = RedisClient.getString(SYS.REDIS_COMP_DB + compId);
      if (StringUtils.isNotBlank(jsonStr)){
        dbDto = JSONObject.parseObject(jsonStr, DbDto.class);
      }else {
        //缓存不存在,查询数据库
        Record dbRecord = Db.use(SYS_TABLE.MASTER_DB).findFirst("select * from 配置表 where comp_id = ? ", compId);
        //parseObject方法是自己封装的Record转实体类方法,在前面的文章有写过,也是在这个工具类中
        dbDto = parseObject(dbRecord, DbDto.class);
        //加入缓存
        if (dbDto != null){
          RedisClient.setString(SYS.REDIS_COMP_DB + compId, JSONObject.toJSONString(dbDto));
        }
      }
      if (dbDto == null){
        logger.info("切换数据库失败,企业不存在或无对应数据库配置!");
        return null;
      }
      //是否已存在该数据库连接
      if (DbKit.getConfig(dbDto.getDbname()) == null){
        //创建数据库连接
        DruidPlugin plugin = new DruidPlugin("jdbc:Mysql://" + dbDto.getDbhost()+ "/"+dbDto.getDbname(), dbDto.getDbuser(), dbDto.getDbpwd());
        plugin.start();
        ActiveRecordPlugin arp= new ActiveRecordPlugin(dbDto.getDbname(), plugin);
        arp.start();
      }
    }catch (Exception e){
      logger.error("捕获异常: 切换数据库失败!", e);
      return null;
    }
    return dbDto.getDbname();
  }

这样根据参数compId即可动态选择参数对应的数据库(CommonUtil是我封装这个方法的工具类)


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

到此这篇关于Java中JFinal框架动态切换数据库的方法的文章就介绍到这了,更多相关JFinal框架动态切换数据库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中JFinal框架动态切换数据库的方法

本文链接: https://www.lsjlt.com/news/122092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中JFinal框架动态切换数据库的方法
    需求:需要根据企业ID切换对应的数据库,同时,后期可动态增加数据库配置 JFinal框架中对于对于多数据源配置有两种方式: 1.通过配置文件配置,有多少数据库就要配置多少,服务启动时...
    99+
    2022-11-11
  • Java中如何使用JFinal框架动态切换数据库
    这篇文章主要介绍了Java中如何使用JFinal框架动态切换数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求:需要根据企业ID切换对应的数据库,同时,后期可动态增加数...
    99+
    2023-06-14
  • spring-data-redis 动态切换数据源的方法
    最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群。一般我们不会这么使用 Redis,但是这两个 Redis 本来是不同业务集群,现在需要一个微服...
    99+
    2022-11-12
  • 详细聊聊SpringBoot中动态切换数据源的方法
    其实这个表示有点不太对,应该是 Druid 动态切换数据源的方法,只是应用在了 springboot 框架中,准备代码准备了半天,之前在一次数据库迁移中使用了,发现 Druid 还是...
    99+
    2022-11-12
  • SpringBoot自定义动态切换数据源的方法是什么
    本篇内容主要讲解“SpringBoot自定义动态切换数据源的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot自定义动态切换数据源的方法是什么”吧!1、添加maven依...
    99+
    2023-06-21
  • pycharm中django框架连接mysql数据库的方法
    目录1、首先下载安装pymysql模块。 2、导入库 4、注意:不要忘记了在数据库中创建该数据库 5、连接mysql数据库 6、测试程序能否能连接上 1、首先下载安装pym...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作