新しいプロジェクトは、RuoYi フレームワーク (フロントエンドとバックエンドを分離しないバージョン、V4.7.5) を使用し、Dameng データベースを使用します。SpringBoot プロジェクト自体のデータベースを変更することは難しくありません.唯一の変数は、国内のデータベースで見つけることができる情報がそれほど豊富ではないことです.このプロジェクトの変更プロセスを通じて、テキストに記録されます.将来のトレースに便利です。
1. JDBC 依存関係
- 過去にDamengデータベースを使用した経験によると、Damengは正式にMavenバージョンのjdbcパッケージを提供していませんでした。インターネットでの経験は、基本的にDamengデータベースのインストールパスの下にあるjarパッケージを使用してインストールすることですローカルの Maven ウェアハウス; ローカル インストールの jar パッケージまたはプロジェクト リソース ディレクトリに jar パッケージを配置する方法に違和感を常に感じており、Maven ウェアハウスで検索してみましたが、実際には存在しません。それが公式に提供されているかどうかを確認してください;まあ、持っている方が便利です。
- admin サブモジュールの pom ファイルを変更し、mysql-jdbc 依存関係を dm-jdbc 依存関係に置き換えます。
- 次のようにファイルを変更します。
<dependencies> <!-- 其他依赖省略 --> <!-- Mysql驱动包 --> <!-- <dependency>--> <!-- <groupId>mysql</groupId>--> <!-- <artifactId>mysql-connector-java</artifactId>--> <!-- </dependency>--> <!-- 达梦驱动包 --> <dependency> <groupId>com.dameng</groupId> <artifactId>Dm7JdbcDriver18</artifactId> <version>7.6.0.165</version> </dependency> </dependencies>
- jdbc パッケージのバージョンに注意してください。Dm7JdbcDriver18 の 7 は DM データベースのバージョンで、18 は JDK のバージョンです。
2. データベース接続プールの構成
- 構成は次のように変更されます。
# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: dm.jdbc.driver.DmDriver druid: # 主库数据源 master: url: jdbc:dm://[ip]:[port] username: SYSDBA password: ***
三、Pagehelperの方言設定
- 次のように変更します。
# PageHelper分页插件 pagehelper: helperDialect: oracle supportMethodsArguments: true params: count=countSql
4. DM がサポートしていない SQL 関数に適応する
-
関数への置き換え: オンライン ユーザー関数を記録します。SysUserOnlineMapper の saveOnline メソッドは、サポートされていない関数への置換を使用します。これは関数へのマージに置き換える必要があります。
- 元の文:
<insert id="saveOnline" parameterType="SysUserOnline"> replace into sys_user_online(sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, start_timestamp, last_access_time, expire_time) values (#{sessionId}, #{loginName}, #{deptName}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{status}, #{startTimestamp}, #{lastAccessTime}, #{expireTime}) </insert>
- 変更されたステートメント:
<insert id="saveOnline" parameterType="SysUserOnline"> merge into sys_user_online using (select #{sessionId} sessionId, #{loginName} login_name, #{deptName} dept_name, #{ipaddr} ipaddr, #{loginLocation} login_location, #{browser} browser, #{os} os, #{tatus} status, #{startTimestamp} start_timestamp, #{lastAccessTime} last_access_time, #{expireTime} expire_time from dual) d on sys_user_online.sessionId = d.sessionId when matched then update set sys_user_online.login_name = d.login_name, sys_user_online.dept_name = d.dept_name, sys_user_online.ipaddr = d.ipaddr, sys_user_online.login_location = d.login_location, sys_user_online.browser = d.browser, sys_user_online.os = d.os, sys_user_online.status = d.status, sys_user_online.start_timestamp = d.start_timestamp, sys_user_online.last_access_time = d.last_access_time, sys_user_online.expire_time = d.expire_time when not matched then insert (sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, start_timestamp, last_access_time, expire_time) values(d.sessionId, d.login_name, d.dept_name, d.ipaddr, d.login_location, d.browser, d.os, d.status, d.start_timestamp, d.last_access_time, d.expire_time) </insert>
-
find_in_set: 部門管理。サポートされていない find_in_set 関数が SysDeptMapper で使用されています。これは instr 関数に置き換えることができます。
- 例は次のとおりです。
-- 原函数 find_in_set(#{deptId}, ancestors) -- 新函数 instr(','||ancestors||',' , ','|| #{deptId} ||',')
5. 注意事項
- char 型の場合、長さは 1 から 4 に変化し、読み取ったデータは「1」などの空白で埋められます。これにより、システムが異常に表示/バックフィルします。
6. まとめ
- この時点で、プロジェクト全体 (コード生成モジュールを除く) は基本的に正常に実行でき、プロジェクトの適応の第 1 段階は終了します。
- 発見されていない SQL 関数の問題が存在する可能性があり、それらの問題が発生した後にのみ修正できます。
- コード生成モジュールは、データベースのテーブル構造などの情報を読み取る必要がありますが、これは多くの変更が加えられていて、まだ実装されていないため、最初に DM の関連情報を検索する必要があり、それが正しいかどうかはわかりません。適応可能であれば、別の記事が記録されます。