最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項(xiàng)目整合達(dá)夢數(shù)據(jù)庫詳解(MYSQL轉(zhuǎn)換達(dá)夢數(shù)據(jù)庫)

 更新時間:2025年03月10日 15:41:45   作者:m0_74824496  
這篇文章主要為大家詳細(xì)介紹了MYSQL轉(zhuǎn)換達(dá)夢數(shù)據(jù)庫以及SpringBoot項(xiàng)目整合達(dá)夢數(shù)據(jù)庫的相關(guān)教程,文中的示例代碼講解詳細(xì),需要的可以參考下

一、達(dá)夢數(shù)據(jù)庫的安裝和使用

1、達(dá)夢數(shù)據(jù)庫下載

產(chǎn)品下載 | 達(dá)夢數(shù)據(jù)庫

2、Windows環(huán)境安裝達(dá)夢數(shù)據(jù)庫

參考文章:Windows環(huán)境安裝達(dá)夢數(shù)據(jù)庫_達(dá)夢數(shù)據(jù)庫安裝

二、MYSQL數(shù)據(jù)庫 遷移至 達(dá)夢數(shù)據(jù)庫

參考文章:MySQL數(shù)據(jù)遷移至達(dá)夢數(shù)據(jù)庫

在安裝的tool目錄下,查找相關(guān)的工具:

1、DM控制臺工具:Console

服務(wù)器配置又該有兩種方式:①DM控制臺工具修改;②配置文件修改。

方法一:服務(wù)器配置:設(shè)置系統(tǒng)兼容性(DM控制臺工具),兼容MySQL

方法二:(1)查找dm.ini文件

(2)dm.ini修改【#compatibility】的【COMPATIBLE_MODE】=4

(3)重啟Dameng服務(wù)

2、DM數(shù)據(jù)遷移工具:DTS

在這里操作:MySQL數(shù)據(jù)遷移至達(dá)夢數(shù)據(jù)庫

注意:當(dāng)遷移過程中出現(xiàn)下面問題時,如有觸發(fā)器或者外鍵,需要先關(guān)掉觸發(fā)器和外鍵,然后進(jìn)行遷移,不然會導(dǎo)致遷移失敗。

MYSQL的數(shù)據(jù)表轉(zhuǎn)換成DM的數(shù)據(jù)表時,點(diǎn)擊轉(zhuǎn)換按鈕。如下:

設(shè)置【1:遷移策略選項(xiàng)】

設(shè)置【2:列映射選項(xiàng)】

3、添加用戶:如果導(dǎo)入的DM數(shù)據(jù)庫需要和MYSQL的用戶一樣,添加ROOT用戶。

三、Spring項(xiàng)目整合達(dá)夢數(shù)據(jù)庫

1、配置java項(xiàng)目連接達(dá)夢,切換數(shù)據(jù)連接驅(qū)動

2、Maven導(dǎo)入達(dá)夢數(shù)據(jù)庫驅(qū)動包

3、表的實(shí)體類映射?!驹L問形式:模式名.表名】

4、XML文件:查詢表【模式名.表名】

5、MYSQL字段類型與DM數(shù)據(jù)類型的轉(zhuǎn)換。【DM:達(dá)夢數(shù)據(jù)庫】

package com.company.common.core.annotation;

/**
 * 數(shù)據(jù)庫類型
 *
 * @author kally
 * @date 2023/12/13
 */
public enum DbType {
    /**
     * 數(shù)據(jù)庫類型(類型,描述)
     */
    MYSQL("mysql", "MySql數(shù)據(jù)庫"),
    MARIADB("mariadb", "MariaDB數(shù)據(jù)庫"),
    ORACLE("oracle", "Oracle11g及以下數(shù)據(jù)庫(高版本推薦使用ORACLE_NEW)"),
    ORACLE_12C("oracle12c", "Oracle12c+數(shù)據(jù)庫"),
    DB2("db2", "DB2數(shù)據(jù)庫"),
    H2("h2", "H2數(shù)據(jù)庫"),
    HSQL("hsql", "HSQL數(shù)據(jù)庫"),
    SQLITE("sqlite", "SQLite數(shù)據(jù)庫"),
    POSTGRE_SQL("postgresql", "Postgre數(shù)據(jù)庫"),
    SQL_SERVER2005("sqlserver2005", "SQLServer2005數(shù)據(jù)庫"),
    SQL_SERVER("sqlserver", "SQLServer數(shù)據(jù)庫"),
    DM("dm", "達(dá)夢數(shù)據(jù)庫"),
    XU_GU("xugu", "虛谷數(shù)據(jù)庫"),
    KINGBASE_ES("kingbasees", "人大金倉數(shù)據(jù)庫"),
    PHOENIX("phoenix", "Phoenix HBase數(shù)據(jù)庫"),
    GAUSS("zenith", "Gauss 數(shù)據(jù)庫"),
    CLICK_HOUSE("clickhouse", "clickhouse 數(shù)據(jù)庫"),
    GBASE("gbase", "南大通用(華庫)數(shù)據(jù)庫"),
    GBASE_8S("gbase-8s", "南大通用數(shù)據(jù)庫 GBase 8s"),

    @Deprecated
    GBASEDBT("gbasedbt", "南大通用數(shù)據(jù)庫"),

    @Deprecated
    GBASE_INFORMIX("gbase 8s", "南大通用數(shù)據(jù)庫 GBase 8s"),

    SINODB("sinodb", "星瑞格數(shù)據(jù)庫"),
    OSCAR("oscar", "神通數(shù)據(jù)庫"),
    SYBASE("sybase", "Sybase ASE 數(shù)據(jù)庫"),
    OCEAN_BASE("oceanbase", "OceanBase 數(shù)據(jù)庫"),
    FIREBIRD("Firebird", "Firebird 數(shù)據(jù)庫"),
    HIGH_GO("highgo", "瀚高數(shù)據(jù)庫"),
    CUBRID("cubrid", "CUBRID數(shù)據(jù)庫"),
    GOLDILOCKS("goldilocks", "GOLDILOCKS數(shù)據(jù)庫"),
    CSIIDB("csiidb", "CSIIDB數(shù)據(jù)庫"),
    SAP_HANA("hana", "SAP_HANA數(shù)據(jù)庫"),
    IMPALA("impala", "impala數(shù)據(jù)庫"),
    VERTICA("vertica", "vertica數(shù)據(jù)庫"),
    XCloud("xcloud", "行云數(shù)據(jù)庫"),
    REDSHIFT("redshift", "亞馬遜redshift數(shù)據(jù)庫"),
    OPENGAUSS("openGauss", "華為 opengauss 數(shù)據(jù)庫"),
    TDENGINE("TDengine", "TDengine數(shù)據(jù)庫"),
    INFORMIX("informix", "Informix數(shù)據(jù)庫"),
    UXDB("uxdb", "優(yōu)炫數(shù)據(jù)庫"),
    LEALONE("lealone", "Lealone數(shù)據(jù)庫"),
    OTHER("other", "其他數(shù)據(jù)庫");

    private final String db;
    private final String desc;

    public static DbType getDbType(String dbType) {
        DbType[] var1 = values();
        int var2 = var1.length;

        for (int var3 = 0; var3 < var2; ++var3) {
            DbType type = var1[var3];
            if (type.db.equalsIgnoreCase(dbType)) {
                return type;
            }
        }

        return OTHER;
    }

    public String getDb() {
        return this.db;
    }

    public String getDesc() {
        return this.desc;
    }

    /**
     * 數(shù)據(jù)庫類型
     *
     * @param db   數(shù)據(jù)庫
     * @param desc 描述
     */
    private DbType(final String db, final String desc) {
        this.db = db;
        this.desc = desc;
    }

}

6、達(dá)夢數(shù)據(jù)庫分頁插件

7、SQL適配關(guān)鍵字列名

mysql使用反引號來區(qū)分列名和關(guān)鍵字;達(dá)夢數(shù)據(jù)庫使用雙引號來區(qū)分;實(shí)體類映射字段之前的修改。

MybatisPlusConfig.java文件再加入下列代碼,復(fù)制即可。

@Bean
    public DmFieldCustomizer getDmFieldCustomizer() {
        return new DmFieldCustomizer();
    }

    /**
     * 在mybatisPlus加載進(jìn)spring容器之前自定義某些配置
     *
     * @author HetFrame
     */
    public static class DmFieldCustomizer implements MybatisPlusPropertiesCustomizer {
        public DmFieldCustomizer() {
            log.info("加載DmFieldCustomizer...");
        }

        @SneakyThrows
        @Override
        public void customize(MybatisPlusProperties properties) {
            // 使用達(dá)夢數(shù)據(jù)庫
            if (Arrays.toString(properties.getMapperLocations()).contains("dm")) {
                log.info("使用達(dá)夢數(shù)據(jù)庫");
                //實(shí)體類的class
                List<Class<?>> classList = new ArrayList<>();
                PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
                //找到所有實(shí)體類的class
                Resource[] resources = resolver.getResources("classpath*:com/**/entity/**/*.class");
                for (Resource res : resources) {
                    // 先獲取resource的元信息,然后獲取class元信息,最后得到 class 全路徑
                    String clsName = new SimpleMetadataReaderFactory().getMetadataReader(res).getClassMetadata().getClassName();
                    // 通過名稱加載
                    Class<?> clazz = Class.forName(clsName);
                    classList.add(clazz);
                }

                classList.forEach(e -> {
                    List<Field> list = TableInfoHelper.getAllFields(e);
                    list.forEach(field -> {
                        TableField tableField = field.getAnnotation(TableField.class);
                        String metaColName;
                        if (tableField != null && StringUtils.isNotBlank(metaColName = tableField.value()) && metaColName.contains("`")) {

                            String newColName = metaColName.replace("`", """);

                            InvocationHandler invocationHandler = Proxy.getInvocationHandler(tableField);
                            try {
                                Field memberValues = invocationHandler.getClass().getDeclaredField("memberValues");
                                memberValues.setAccessible(true);
                                Map memberValuesMap = (Map) memberValues.get(invocationHandler);
                                memberValuesMap.put("value", newColName);
                                log.info("將實(shí)體類映射字段{}修改為{}", metaColName, newColName);
                            } catch (NoSuchFieldException | IllegalAccessException exception) {
                                throw new RuntimeException(exception);
                            }
                        }
                    });
                });

            } else {
                log.info("使用mysql數(shù)據(jù)庫");
            }
        }
    }

package com.company.common.framework.mybatis;


import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;

/**
 * MybatisPlusPropertiesCustomizer 用于在讀取 properties 之后進(jìn)行一些自定義操作
 *
 * @author kally
 * @date 2023/12/13
 */
public interface MybatisPlusPropertiesCustomizer {
    /**
     * mysql中我們使用反引號來區(qū)分列名和關(guān)鍵字;但在達(dá)夢數(shù)據(jù)庫中,使用雙引號來區(qū)分。
     * 而如果創(chuàng)建實(shí)體類在注解 @TableField 中使用了反引號例如 @TableField(`range`),
     * 這種我們改了的話,mysql 就用不了,不改達(dá)夢就用不了。所以從代碼入手,在啟動時用反射修改值。
     * 達(dá)夢數(shù)據(jù)庫某些關(guān)鍵字例如 audit,在 mysql 中不是關(guān)鍵字的,需要手動設(shè)置 @TableField(`audit`)。
     */

    /**
     * MybatisPlusPropertiesCustomizer 用于在讀取 properties 之后進(jìn)行一些自定義操作
     *
     * @param properties {@link MybatisPlusProperties}
     */
    void customize(MybatisPlusProperties properties);
}

以上就是SpringBoot項(xiàng)目整合達(dá)夢數(shù)據(jù)庫詳解(MYSQL轉(zhuǎn)換達(dá)夢數(shù)據(jù)庫)的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合達(dá)夢數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java面試題之try中含return語句時代碼的執(zhí)行順序詳解

    java面試題之try中含return語句時代碼的執(zhí)行順序詳解

    這篇文章主要介紹了關(guān)于java中的一道面試題,這套題就是在try中含return語句時代碼的執(zhí)行順序,這個問題看似簡單,卻暗藏殺機(jī)??!文中通過一個個例子詳細(xì)介紹了其中玄機(jī),需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-04-04
  • 關(guān)于后端如何解決跨域的問題說明

    關(guān)于后端如何解決跨域的問題說明

    這篇文章主要介紹了關(guān)于后端如何解決跨域的問題說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • java調(diào)用Hbase報錯解決方法

    java調(diào)用Hbase報錯解決方法

    這篇文章主要為大家介紹了java調(diào)用Hbase報錯解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • SpringSecurity在單機(jī)環(huán)境下使用方法詳解

    SpringSecurity在單機(jī)環(huán)境下使用方法詳解

    本文詳細(xì)介紹了SpringSecurity和SpringBoot的整合過程,包括配置用戶認(rèn)證、JSP頁面的使用、數(shù)據(jù)庫認(rèn)證以及授權(quán)功能的實(shí)現(xiàn),感興趣的朋友一起看看吧
    2025-02-02
  • SharedWorkerGlobalScope屬性數(shù)據(jù)共享示例解析

    SharedWorkerGlobalScope屬性數(shù)據(jù)共享示例解析

    這篇文章主要為大家介紹了SharedWorkerGlobalScope屬性數(shù)據(jù)共享示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 淺談@RequestParam 參數(shù)是否必須傳的問題

    淺談@RequestParam 參數(shù)是否必須傳的問題

    這篇文章主要介紹了淺談@RequestParam 參數(shù)是否必須傳的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java生成二維碼并且給二維碼添加logo

    java生成二維碼并且給二維碼添加logo

    這篇文章主要介紹了java生成二維碼并且給二維碼添加logo的實(shí)例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • springboot的controller中如何獲取applicatim.yml的配置值

    springboot的controller中如何獲取applicatim.yml的配置值

    本文介紹了在SpringBoot的Controller中獲取application.yml配置值的四種方式,并舉例說明了每種方式的使用場景和優(yōu)缺點(diǎn),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java中泛型的使用和優(yōu)點(diǎn)解析

    Java中泛型的使用和優(yōu)點(diǎn)解析

    這篇文章主要介紹了Java中泛型的使用和優(yōu)點(diǎn)解析,泛型使用過程中,操作的數(shù)據(jù)類型被指定為一個參數(shù),這種參數(shù)類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法,需要的朋友可以參考下
    2023-09-09
  • SpringMVC中的幾個模型對象

    SpringMVC中的幾個模型對象

    這篇文章主要介紹了SpringMVC中的幾個模型對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

黔南| 安福县| 新源县| 孟连| 漳州市| 玛多县| 句容市| 固安县| 图们市| 仁寿县| 海安县| 清水河县| 克什克腾旗| 和顺县| 武城县| 临颍县| 外汇| 德阳市| 保康县| 达尔| 乐陵市| 新平| 双辽市| 綦江县| 交口县| 新化县| 白银市| 当涂县| 忻城县| 福泉市| 广灵县| 关岭| 长子县| 玛纳斯县| 邹城市| 乐安县| 许昌市| 肇庆市| 蕲春县| 新化县| 集贤县|