参考连接:
一、引入驱动包
1.在ruoyi-admin的pom.xml中引入驱动
<!-- 达梦数据库驱动 --> <dependency> <groupId>DmJdbc</groupId> <artifactId>dm.jdbc.driver</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemPath> </dependency>
2、驱动导入
DM JDBC 驱动 jar 包在 DM 安装目录 /dmdbms/drivers/jdbc中,如果直接引用jar包可以到这个文件中找。
在ruoyi-admin下创建lib文件夹,将DmJdbcDriver18.jar放入。
3、修改application-druid.yml文件的数据库连接
运行ruoyi-admin下面的clean和package,运行一下ruoyi(Root)总工程下面的install。
ps:数据库可以创建一个用户,然后会自动创建同名的模式,数据表都创建在这个模式下面。之后用这个账号密码登录,这样sql语句中就不用每句话都加模式名称。
4、打包配置修改
需要添加<includeSystemScope>true</includeSystemScope>,这样打包的时候才能把引用的驱动打包到压缩包里面。否则会报错找不到驱动。
二、sql语句兼容
-
DATE_SUB(NOW(),INTERVAL 1 MINUTE)要改写成select DATE_SUB(NOW(),INTERVAL '1' MINUTE);
-
SysMenuMapper.xml中`query`带单引号,删掉;
-
group by后面要加上select的全部字段;
-
group by 后两个表中都有的列,需要增加别名区分
SELECT xxx table a GROUP BY a.monitor_time,type -- 这里要加a
5. date_add函数使用DATEADD函数DATEADD(interval, number, datetime)
interval 是时间间隔的单位,如年(YY)、月(MM)、日(DD)、小时(HH)、分钟 (MI)、秒(SS)等。测试发现YEAR/MONTH/DAY/HOUR/MINNUTE/SECOND可用。
number 是要添加或减去的时间间隔的数量。如果为负数,则表示减去相应的时间间隔。
datetime 是原始的日期时间值
6. 建表语句,VARCHAR(5)改成"param_name" VARCHAR(20),否则插入时报错长度超出定 义;
(DM:如果数据库字符集是GB18030,则一个中文字符占2个字节,16位,varchar(2*n)可以允许n个汉字输入。同时chr(n)允许的范围是0~128。在UTF-8字符集的数据库中一个中文字符占3个字节,而在GBK字符集的数据库中一个中文字符占2个字节。
MYSQL:GBK编码:一个汉字占2个字节;UTF-8编码:一个汉字占3个字节。mysql数据库varchar是以字符为单位的,一个汉字即一个字符,varchar(10)能存10个汉字,占30个字节。
迁移数据库时选择强制为字符存储。
参考链接:https://blog.youkuaiyun.com/best924133514/article/details/130069278)
7. select xx as 列名,列名为中文时,需要用双引号括住。
例如:
SELECT MAX(CASE monitor_time WHEN 1 THEN x ELSE NULL END) 1月,改成 SELECT MAX(CASE monitor_time WHEN 1 THEN x ELSE NULL END) as "1月"
8. date截取日期函数,要用to_char替换, date(#{createTime})改成 to_char(#{createTime},'yyyy-mm-dd');