• 若依系统不分离版框架Mysql更换SqlServer


    前言:最近下载开源项目若依ruoyi,将其更数据库Mysql更换SqlServer的一些注意事项,与君分享。

    1、数据库安装

    使用SSMA将mysql迁移至mssql,参考这两个文档

    MySQL数据库迁移到SQL Server----------SSMA(SQL Server Migration Assistant for MySQL)工具安装及使用_weixin_39921737的博客-CSDN博客_ssma安装

    ssma for mysql_SSMA for MySQL_weixin_39926193的博客-CSDN博客

    若依的数据库脚本是mysql,先用navcate创建一个名为dbo的数据库。(名称最好是dbo,如果数据库名为 ruoyi,迁移到mssql后表名称为 ruoyi.sys_dept)

     运行这两个脚本,创建表

    参考上述文档,将在mysql中建好的表,迁移到sql server2016中

    2、参考文章,修改后台代码

    ruoyi(若依)系统使用SqlServer数据库_op4439的博客-CSDN博客_若依数据库

     一、ruoyi-admin 中pom.xml 添加mssql驱动

    1. <dependency>
    2. <groupId>com.microsoft.sqlservergroupId>
    3. <artifactId>mssql-jdbcartifactId>
    4. dependency>

     二、数据库配置文件修改

    1. spring:
    2. datasource:
    3. type: com.alibaba.druid.pool.DruidDataSource
    4. driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
    5. druid:
    6. # 主库数据源
    7. master:
    8. url: jdbc:sqlserver://localhost:1433;DatabaseName=ry
    9. username: sa
    10. password: 你的密码

      1、配置检测连接是否有效如下:

    2、分页插件配置如下:

    三、代码部分修改

    1、定时任务配置ScheduleConfig类设置sqlserver 启用配置,这个原文件注释了,暂不修改。

    2、SQL语句函数修改,用IDEA功能 Find in files 全局检索修改。

    • ifnull()  改 isnull()
    • find_in_set 修改,下面两处,在SysDeptMapper
      1. <select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
      2. select * from sys_dept where charindex (',' + CONVERT (VARCHAR, #{deptId}), ',' + ancestors) > 0
      3. select>
      4. <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
      5. select count(*) from sys_dept where status = 0 and del_flag = '0' and charindex (',' + CONVERT (VARCHAR, #{deptId}), ',' + ancestors) > 0
      6. select>
    • concat 替换为 ''+'', server2016 支持这个函数,不需要修改

    • sysdate 替换为 getdate,  这个比较多,用替换Replace

    • date_format 日期范围检索的,改用datediff,用多处,慢慢改,如下(<= 符号 用 <=  替换)

      1. <if test="params.beginTime != null and params.beginTime != ''">
      2. and datediff(day,login_time,#{params.beginTime}) <= 0
      3. if>
      4. <if test="params.endTime != null and params.endTime != ''">
      5. and datediff(day,login_time,#{params.endTime}) >= 0
      6. if>
    • limit 1 替换成 top 1 ,位置需要修改(这种好像只有一处,在sysConfigMapper.xml中)

      1. <select id="checkConfigKeyUnique" parameterType="String" resultMap="SysConfigResult">
      2. select top 1 config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark
      3. from sys_config
      4. where config_key = #{configKey}
      5. select>

    • select count(1)...limit 1 ,直接删除limit 1 就可以

    3、生成代码部分的sql修改  

    • 修改 selectDbTableList,selectDbTableListByNames  
    1. <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
    2. SELECT so.name table_name,sep.value table_comment,so.create_date create_time,so.modify_date update_time
    3. FROM sys.objects AS so
    4. LEFT JOIN sys.extended_properties AS sep ON so.object_id = sep.major_id
    5. WHERE so.type = 'U'
    6. AND sep.minor_id = 0
    7. AND so.name NOT LIKE 'qrtz_%' AND so.name NOT LIKE 'gen_%'
    8. AND so.name NOT IN (select table_name from gen_table)
    9. <if test="tableName != null and tableName != ''">
    10. AND lower(so.name) like lower(concat('%', #{tableName}, '%'))
    11. if>
    12. <if test="tableComment != null and tableComment != ''">
    13. AND lower(cast(sep.value as varchar)) like lower(concat('%', #{tableComment}, '%'))
    14. if>
    15. <if test="params.beginTime != null and params.beginTime != ''">
    16. AND datediff(day,#{params.beginTime},create_time) >=0
    17. if>
    18. <if test="params.endTime != null and params.endTime != ''">
    19. AND datediff(day,create_time,#{params.endTime}) >=0
    20. if>
    21. order by create_time desc
    22. select>
    23. <select id="selectDbTableListByNames" resultMap="GenTableResult">
    24. SELECT SO.name table_name,SEP.VALUE table_comment,SO.create_date create_time,SO.modify_date update_time
    25. FROM sys.objects AS SO
    26. LEFT JOIN sys.extended_properties AS SEP ON SO.object_id = SEP.major_id
    27. WHERE SO.type = 'U'
    28. AND SEP.minor_id = 0
    29. AND SO.name NOT LIKE 'qrtz_%' and SO.name NOT LIKE 'gen_%'
    30. AND SO.name in
    31. <foreach collection="array" item="name" open="(" separator="," close=")">
    32. #{name}
    33. foreach>
    34. select>
    • selectDbTableColumnsByName , 在GenTableColumnMapper.xml文件中

      4、代码生成器中修改sql.vm

      1. -- 按钮父菜单ID
      2. Declare @parentId int
      3. SELECT @parentId = @@IDENTITY

     

     

  • 相关阅读:
    Python学习笔记(十七)——Pandas库
    Java Websocket 01: 原生模式 Websocket 基础通信
    决赛名单公布!亚马逊云科技2022 AI For Good决赛酣战在即!
    Pandas中的方法及使用示例
    快速统计文本数字之和
    基于局部自适应阈值分割和Hough变换的答题卡识别算法-含Matlab代码
    服务器假死日志按时间统计排查
    本地web服务器配置(IIS)
    FPGA 图像缩放 1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持
    Linux系统编程(七):线程同步
  • 原文地址:https://blog.csdn.net/kay523393/article/details/126059496