最近重构项目,选用了bootdo开源框架进行开发,因业务库是oracle,所以需要改一下数据库的连接,具体改动如下:

1.在maven中安装oracle驱动

因项目使用maven管理,而oracle不在maven仓库中,所以我们需要先到 oracle驱动官网 下载对应的oracle版本对应驱动(我这里是11.2.0.1.0),使用ojbc6.jar即可。然后把ojbc6.jar放置d:/jar/ 目录下,在此目录下按住shift+鼠标右键,点击[在此处打开命令窗口],或者使用git bash,输入以下命令:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar

运行成功会提示:”BULLD SUCCESS”

2.修改项目中的相关配置

修改pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.1.0</version>
</dependency>

修改application-dev.yml

driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@127.0.0.1:1521:test
username: test
password: 123456
validationQuery: select 'x' from dual

修改ActiviConfig.java

processEngineConfiguration.setDatabaseType("oracle");

如要使用代码生成器,则还需修改GeneratorMapper.java

@Select("SELECT a.object_name \"tableName\", b.comments \"tableComment\", a.created \"createTime\" FROM user_objects a LEFT JOIN user_tab_comments b on a.object_name = b.table_name WHERE a.object_name in(\n" +
        "  select table_name from user_all_tables)")
List<Map<String, Object>> list();

@Select("select count(1) from user_objects WHERE object_type = 'TABLE'")
int count(Map<String, Object> map);

@Select("SELECT a.object_name as \"tableName\", b.comments as \"tableComment\", a.created \"createTime\" FROM user_objects a LEFT JOIN user_tab_comments b on a.object_name = b.table_name WHERE a.object_name = #{tableName}")
Map<String, String> get(String tableName);

@Select("SELECT a.COLUMN_NAME as \"columnName\",a.data_type as \"dataType\",b.comments as \"comments\"\n" +
        "FROM user_tab_columns a LEFT JOIN user_col_comments b on a.column_name = b.column_name\n" +
        "WHERE a.table_name = #{tableName} AND a.table_name = b.table_name order by column_id")
List<Map<String, String>> listColumns(String tableName);

springboot项目使用oracle,需为mybatis指定当值为null时,jdbc的数据类型,所以要在appcation.yml添加:

mybatis:
  configuration:
jdbc-type-for-null: 'null'

3.修改mapper的sql语句和数据实体

因为原先使用的mysql,脚本语法跟oracle会有些许不同,所以如要使用原有的菜单功能,还需要修改sql语句。
在bootdo中,mysql 的limit语句是oracle不支持的,所以要改成oracle中的rownum分页方式,我的方法如下:

<select id="list" …… >
select * from (
        select rownum rn,
        id
       from salary
       <where>
       ……
       <if test="offset != null and limit != null">
      and rownum &lt;= ( #{offset} +#{limit})
    </if>
       </where>
       ……
       </choose>
       )
    <if test="offset != null and limit != null">
      where rn>= #{offset}
    </if>
</select>

接着就根据IDE的报错,修改相应数据实体中的数据类型就可以了

Last modification:September 25, 2018
If you think my article is useful to you, please feel free to appreciate