最近重构项目,选用了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 <= ( #{offset} +#{limit})
</if>
</where>
……
</choose>
)
<if test="offset != null and limit != null">
where rn>= #{offset}
</if>
</select>
接着就根据IDE的报错,修改相应数据实体中的数据类型就可以了