All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.anyline.data.jdbc.adapter.init.TemplateJDBCAdapter Maven / Gradle / Ivy

There is a newer version: 8.7.2-20240916
Show newest version
/*
 * Copyright 2006-2023 www.anyline.org
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.anyline.data.jdbc.adapter.init;

import org.anyline.data.param.ConfigStore;
import org.anyline.data.runtime.DataRuntime;
import org.anyline.metadata.Column;
import org.anyline.metadata.Metadata;

import javax.sql.DataSource;
import java.sql.Connection;
import java.util.LinkedHashMap;

//
public abstract class TemplateJDBCAdapter extends AbstractJDBCAdapter {

/*    public DatabaseType type() {
        return DatabaseType.NONE;
    }

    public TemplateJDBCAdapter() {
        super();
        delimiterFr = "`";
        delimiterTo = "`";
        for(MySQLTypeMetadataAlias alias:MySQLTypeMetadataAlias.values()) {
            reg(alias);
            alias(alias.name(), alias.standard());
        }
        for (MySQLTypeMetadataAlias alias: MySQLTypeMetadataAlias.values()) {
            reg(alias);
            alias(alias.name(), alias.standard());
        }
        for(MySQLWriter writer: MySQLWriter.values()) {
            reg(writer.supports(), writer.writer());
        }
        for(MySQLReader reader: MySQLReader.values()) {
            reg(reader.supports(), reader.reader());
        }
    }
    
    private String delimiter;
*/

    /* *****************************************************************************************************************
     *
     *                                                     复制过程
     * 1.添加TypeMetadataAlias
     * 2.如果有类型转换需要添加writer reader
     * 3.放开以上注释
     * 4.复制TemplateAdapter到这里
     *
     *  ***************************************************************************************************************/

    /* *****************************************************************************************************************
     *
     *                                                         JDBC
     *
     *  ***************************************************************************************************************/

    @Override
    public  void checkSchema(DataRuntime runtime, DataSource datasource, T meta) {
        super.checkSchema(runtime, datasource, meta);
    }

    @Override
    public  void checkSchema(DataRuntime runtime, Connection con, T meta) {
        super.checkSchema(runtime, con, meta);
    }

    /**
     * 根据运行环境识别 catalog与schema
     * @param runtime 运行环境主要包含驱动适配器 数据源或客户端
     * @param meta Metadata
     * @param  Metadata
     */
    @Override
    public  void checkSchema(DataRuntime runtime, T meta) {
        super.checkSchema(runtime, meta);
    }

    /**
     * 识别根据jdbc返回的catalog与schema, 部分数据库(如mysql)系统表与jdbc标准可能不一致根据实际情况处理
* 注意一定不要处理从SQL中返回的,应该在SQL中处理好 * @param meta Metadata * @param catalog 对于MySQL, 则对应相应的数据库, 对于Oracle来说, 则是对应相应的数据库实例, 可以不填, 也可以直接使用Connection的实例对象中的getCatalog()方法返回的值填充; * @param schema 可以理解为数据库的登录名, 而对于Oracle也可以理解成对该数据库操作的所有者的登录名。对于Oracle要特别注意, 其登陆名必须是大写, 不然的话是无法获取到相应的数据, 而MySQL则不做强制要求。 * @param overrideMeta 如果meta中有值,是否覆盖 * @param overrideRuntime 如果runtime中有值,是否覆盖,注意结果集中可能跨多个schema,所以一般不要覆盖runtime,从con获取的可以覆盖ResultSet中获取的不要覆盖 * @param Metadata */ @Override public void correctSchemaFromJDBC(DataRuntime runtime, T meta, String catalog, String schema, boolean overrideRuntime, boolean overrideMeta) { super.correctSchemaFromJDBC(runtime, meta, catalog, schema, overrideRuntime, overrideMeta); } /** * 在调用jdbc接口前处理业务中的catalog, schema, 部分数据库(如mysql)业务系统与dbc标准可能不一致根据实际情况处理
* @param catalog 对于MySQL, 则对应相应的数据库, 对于Oracle来说, 则是对应相应的数据库实例, 可以不填, 也可以直接使用Connection的实例对象中的getCatalog()方法返回的值填充; * @param schema 可以理解为数据库的登录名, 而对于Oracle也可以理解成对该数据库操作的所有者的登录名。对于Oracle要特别注意, 其登陆名必须是大写, 不然的话是无法获取到相应的数据, 而MySQL则不做强制要求。 * @return String[] */ @Override public String[] correctSchemaFromJDBC(String catalog, String schema) { return super.correctSchemaFromJDBC(catalog, schema); } public String insertFoot(ConfigStore configs, LinkedHashMap columns) { return super.insertFoot(configs, columns); } /** * 内置函数 多种数据库兼容时需要 * @param value SQL_BUILD_IN_VALUE * @return String */ @Override public String value(DataRuntime runtime, Column column, SQL_BUILD_IN_VALUE value) { return super.value(runtime, column, value); } /** * 拼接字符串 * @param runtime 运行环境主要包含驱动适配器 数据源或客户端 * @param args args * @return String */ @Override public String concat(DataRuntime runtime, String... args) { return super.concat(runtime, args); } /** * 伪表 * @return String */ protected String dummy() { return super.dummy(); } /* ***************************************************************************************************************** * * 具体数据库 * * ***************************************************************************************************************/ }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy