コード例 #1
0
  /** 配置插件 */
  public void configPlugin(Plugins me) {
    log.info("configPlugin 配置Druid数据库连接池连接属性");
    DruidPlugin druidPlugin =
        new DruidPlugin(
            (String) PropertiesPlugin.getParamMapValue(DictKeys.db_connection_jdbcUrl),
            (String) PropertiesPlugin.getParamMapValue(DictKeys.db_connection_userName),
            (String) PropertiesPlugin.getParamMapValue(DictKeys.db_connection_passWord),
            (String) PropertiesPlugin.getParamMapValue(DictKeys.db_connection_driverClass));

    log.info("configPlugin 配置Druid数据库连接池大小");
    druidPlugin.set(
        (Integer) PropertiesPlugin.getParamMapValue(DictKeys.db_initialSize),
        (Integer) PropertiesPlugin.getParamMapValue(DictKeys.db_minIdle),
        (Integer) PropertiesPlugin.getParamMapValue(DictKeys.db_maxActive));

    log.info("configPlugin 配置ActiveRecord插件");
    ActiveRecordPlugin arpMain = new ActiveRecordPlugin(DictKeys.db_dataSource_main, druidPlugin);
    // arp.setTransactionLevel(4);//事务隔离级别
    arpMain.setDevMode(getPropertyToBoolean(DictKeys.config_devMode, false)); // 设置开发模式
    arpMain.setShowSql(getPropertyToBoolean(DictKeys.config_devMode, false)); // 是否显示SQL

    log.info("configPlugin 数据库类型判断");
    String db_type = (String) PropertiesPlugin.getParamMapValue(DictKeys.db_type_key);
    if (db_type.equals(DictKeys.db_type_postgresql)) {
      log.info("configPlugin 使用数据库类型是 postgresql");
      arpMain.setDialect(new PostgreSqlDialect());
      arpMain.setContainerFactory(
          new CaseInsensitiveContainerFactory(true)); // 配置属性名(字段名)大小写不敏感容器工厂

    } else if (db_type.equals(DictKeys.db_type_mysql)) {
      log.info("configPlugin 使用数据库类型是 mysql");
      arpMain.setDialect(new MysqlDialect());
      arpMain.setContainerFactory(
          new CaseInsensitiveContainerFactory(true)); // 配置属性名(字段名)大小写不敏感容器工厂

    } else if (db_type.equals(DictKeys.db_type_oracle)) {
      log.info("configPlugin 使用数据库类型是 oracle");
      druidPlugin.setValidationQuery(
          "select 1 FROM DUAL"); // 指定连接验证语句(用于保存数据库连接池), 这里不加会报错误:invalid oracle validationQuery.
                                 // select 1, may should be : select 1 FROM DUAL
      arpMain.setDialect(new OracleDialect());
      arpMain.setContainerFactory(
          new CaseInsensitiveContainerFactory(true)); // 配置属性名(字段名)大小写不敏感容器工厂
    }

    log.info("configPlugin 添加druidPlugin插件");
    me.add(druidPlugin); // 多数据源继续添加

    log.info("configPlugin 表扫描注册");
    Map<String, ActiveRecordPlugin> arpMap = new HashMap<String, ActiveRecordPlugin>();
    arpMap.put(DictKeys.db_dataSource_main, arpMain); // 多数据源继续添加
    new TablePlugin(arpMap).start();
    me.add(arpMain); // 多数据源继续添加

    log.info("I18NPlugin 国际化键值对加载");
    me.add(new I18NPlugin());

    log.info("EhCachePlugin EhCache缓存");
    me.add(new EhCachePlugin());

    log.info("SqlXmlPlugin 解析并缓存 xml sql");
    me.add(new SqlXmlPlugin());
  }