目錄
一、若依平臺(tái)配置
? ? ? ? ??二、編寫oracle數(shù)據(jù)庫訪問的各類文件
?三.? 一個(gè)方法操作多個(gè)數(shù)據(jù)源
一、若依平臺(tái)配置
1、在ruoyi-admin的pom.xml添加oracle依賴
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/ojdbc6.jar</systemPath>
</dependency>
2、引入ojdbc6.jar包
在ruoyi-admin的resource下創(chuàng)建lib文件夾,將ojdbc6.jar包保存在此目錄下
3.? 刷新maven
刷新maven保證ruoyi-admin的Dependencies包含com.oracle:ojdbc6:11.2.0.3(system) ,
否則會(huì)報(bào)java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 錯(cuò)誤
4、在ruoyi-admin模塊application-druid.yml
配置從庫數(shù)據(jù)源(若依已配置,需要修改) 注意:刪除 datasource下的driverClassName: com.mysql.cj.jdbc.Driver,寫到master下面
# 數(shù)據(jù)源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 主庫數(shù)據(jù)源
master:
url: jdbc:mysql://IP:3306/feedback?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
driverClassName: com.mysql.cj.jdbc.Driver
# 從庫數(shù)據(jù)源
slave:
# 從數(shù)據(jù)源開關(guān)/默認(rèn)關(guān)閉
enabled: true
url: jdbc:oracle:thin:@IP:1521:orancdb
username: root
password: root
driverClassName: oracle.jdbc.driver.OracleDriver
5、在DataSourceType
類添加數(shù)據(jù)源枚舉(若依已配置,忽略)
/** * 從庫 */
SLAVE
6、在DruidConfig
配置讀取數(shù)據(jù)源(若依已配置,忽略)
@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource(DruidProperties druidProperties)
{
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}
7、在DruidConfig
類dataSource
方法添加數(shù)據(jù)源(若依已配置,忽略)
setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");在`ruoyi-admin模塊application.yml修改配置在`ruoyi-admin模塊application.yml修改配置
?8.在ruoyi-admin模塊application.yml修改PageHelper分頁插件
# PageHelper分頁插件 pagehelper: helperDialect: mysql # 默認(rèn)值為 false。設(shè)置為 true 時(shí),允許在運(yùn)行時(shí)根據(jù)多數(shù)據(jù)源自動(dòng)識(shí)別對(duì)應(yīng)方言的分頁 autoRuntimeDialect: true # 自動(dòng)獲取數(shù)據(jù)庫類型,選擇合適的分頁方式 reasonable: true # 標(biāo)識(shí)數(shù)據(jù)庫類型 # 默認(rèn)為 false,分頁插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面 params 配置的字段中取值,自動(dòng)分頁 supportMethodsArguments: true params: count=countSql
二、編寫oracle數(shù)據(jù)庫訪問的各類文件
1. domain 和mapper controller文件寫法和mysql的寫法都一樣,以下是注意點(diǎn)
(1)注意:oracle數(shù)據(jù)庫字段是CODE 大寫,domain中的字段是code 小寫即可
public class SysOracleUser { private String code; private String name; private String sex;
...
}
(2)mapper.xml中l(wèi)ike的寫法是:like concat(concat('%',#{unitname}),'%'),可參考ruoyi-vue-oracle項(xiàng)目
src/main/resources/mybatis/system/SysUserMapper.xml · 千紙鶴/ruoyi-vue-oracle - Gitee.com
<select id="selectUserList" resultMap="SysNcUserResult"> select code,name,sex,deptname,unitname,status from view_user <where> <if test="unitname != null and unitname != ''"> AND unitname like concat(concat('%',#{unitname}),'%') </if> <if test="code != null and code != ''"> AND code like concat(concat('%',#{code}),'%') </if> <if test="name != null and name != ''"> AND name like concat(concat('%',#{name}),'%') </if> <if test="deptname != null and deptname != ''"> AND deptname like concat(concat('%',#{deptname}),'%') </if> </where> </select>
2. 在需要使用多數(shù)據(jù)源service方法 或service類或mapper方法或mapper類上添加@DataSource
注解,其中value
用來表示數(shù)據(jù)源。只需要在其中一處加即可,只給mapper或者只給service加
(1) service方法
//獲取人員信息
@DataSource(value = DataSourceType.SLAVE)
public List<SysOracleUser > selectUserList(SysOracleUser sysOracleUser )
System.out.println("selectUserList");
List<SysOracleUser > userList= sysOracleMapper.selectUserList(sysOracleUser );
return userList;
}
(2)SysOracleMapper .java?(mapper類)
@DataSource(value = DataSourceType.SLAVE) public interface SysOracleMapper { //獲取人員信息 public List<SysOracleUser> selectUserList(SysOracleUser sysOracleUser); }
(3)SysOracleServiceImpl.java(service類)
@Service @DataSource(value = DataSourceType.SLAVE) public class SysOracleServiceImpl implements ISysOracleService
三.? 一個(gè)方法操作多個(gè)數(shù)據(jù)源
《1》如果一個(gè)方法里操作多個(gè)數(shù)據(jù)庫,給mapper類加@DataSource(value = DataSourceType.SLAVE) 或者@DataSource(value = DataSourceType.MASTER)
這樣service調(diào)用不同數(shù)據(jù)庫的mapper,也不需要切換文章來源:http://www.zghlxwxcb.cn/news/detail-742623.html
《2》只需要在其中一處加即可,只給mapper或者只給service加文章來源地址http://www.zghlxwxcb.cn/news/detail-742623.html
到了這里,關(guān)于若依分離版——配置多數(shù)據(jù)源(mysql和oracle),實(shí)現(xiàn)一個(gè)方法操作多個(gè)數(shù)據(jù)源的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!