1.场景还原,
元数据在oracle. 新数据库mysql 现在要把oacle中的数据 搬到mysql (最简单的方式导入sql ,更改 执行.sql语句也行,因为字段类型不一致的问题,搞起来很麻烦)
因为我这里用的是逆向生成工具插件生成两个包所以先配置一下 逆向生成工具
逆向生成工具坐标
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connection-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1</version> </dependency> </dependencies> <configuration> <configurationFile>${basedir}/src/main/resources/geneatorConfig.xml</configurationFile> <overwrite>true</overwrite> </configuration> </plugin>
配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" > <generatorConfiguration> <context id="mysqlTables" targetRuntime="MyBatis3"> <!-- javabean 实例化接口id--> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <!--生成实体类带toString--> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!-- 控制注释 --> <commentGenerator> <!-- 是否去除所有自动生成的注释文件 --> <property name="suppressAllComments" value="true" /> <!-- 是否去除所有自动生成的文件的时间戳,默认为false --> <property name="suppressDate" value="true" /> </commentGenerator> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/ebiz_insurance?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true" userId="root" password="*****"> <!--设置可以获取tables remarks信息 --> <property name="useInformationSchema" value="true" /> <!--设置可以获取remarks信息 --> <property name="remarks" value="true" /> </jdbcConnection> <!--oracle--> <!-- <jdbcConnection driverClass="oracle.jdbc.Oracle.Driver" connectionURL="jdbc:oracle:thin:@122.16.26.47:1521:COCORCL userId="root" password="*****" > <!--设置可以获取tables remarks信息 --> <property name="useInformationSchema" value="true" /> <!--设置可以获取remarks信息 --> <property name="remarks" value="true" /> </jdbcConnection> --> <javaModelGenerator targetPackage="com.ebiz.claim.center.model" targetProject="src/main/java" /> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mybatis.generated" targetProject="src/main/resources" /> <javaClientGenerator targetPackage="com.ebiz.claim.center.dao" targetProject="src/main/java" type="XMLMAPPER"> <!--<property name="enableSubPackages" value="true"/>--> <!-- rootInterface 属性可以使得生成的Dao自动继承BaseMybatisDAO接口--> <property name="rootInterface" value="com.ebiz.claim.center.common.base.BaseMybatisDAO" /> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是dao层名--> <table tableName="ebiz_channel_api" mapperName="EbizChannelApiDAO" domainObjectName="EbizChannelApi"> <!--主键映射,可以忽略--> <generatedKey column="id" sqlStatement="JDBC" identity="true"></generatedKey> <!--数据库字段与实体类字段进行映射 javaType实体类中 jdbcType数据库中字段----> <!--字段映射规则见字段映射文档--> <columnOverride column="req_template" javaType="java.lang.String" jdbcType="VARCHAR"/> </table> </context> </generatorConfiguration>
配置文件
spring: application: name: qiluodz-menager #配置数据源 datasource: primary: jdbc-url: url: jdbc:mysql://106.14.188.161/manager?characterEncoding=utf-8 username: root password: root driver-class-name: com.mysql.jdbc.Driver secondary: jdbc-url: url: jdbc:oracle:thin:@106.14.188.161:1521:COCORCL username: root password: root driver-class-name: oracle.jdbc.Driver.OracleDrive
config:
import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @SpringBootConfiguration @MapperScan(basePackages = {"com.quality.mappers.mysql.qualityMapper"},sqlSessionTemplateRef ="primarySqlSessionTemplate" ) public class PrimaryDataSourceConfig { @Bean(name = "primaryDataSource") @Primary @Qualifier("primaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.primary") public DataSource primaryDataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "primaryTransactionManager")//配置主数据源的事物 public DataSourceTransactionManager primaryDataSourceTransactionManager(@Qualifier("primaryDataSource") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } @Bean(name = "primarySqlSessionFactory") public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource){ SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath://mybatis/qualityMapperX/*.xml")); bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); return bean.getObject(); } @Bean(name = "primarySqlSessionTemplate") public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); } }
第二个数据源配置文件中,方法名及参数名,全部替换成第二个数据源的名称
第二个数据源,配置文件中,配置主数据源的事物 方法注释掉,要不然找不到主事物,会报错