• 单独使用mybatis创建多数据源


    单独使用mybatis连接数据库,并创建多个数据源连接(Encoding是一个DES加密工具类)

    private static SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
    //读取properties配置文件,读取不需要后缀
    ResourceBundle bundle = ResourceBundle.getBundle(mybatisConfig, new Locale("zh_CN"));
    //properties配置文件中的配置名称
    String configFilename = bundle.getString("configFilename");
    
    //读取配置文件中密文密码,对密码进行解密,c创建db1数据连接
    InputStream is = Resources.getResourceAsStream(mybatisConfig + ".properties");
    properties.load(is);
    String encodeMnpPassword = properties.getProperty("db1.password");
    properties.setProperty("db1.password", Encoding.decoding(encodeMnpPassword, false));
    SqlSessionFactory mnpBuild = ssfb.build(PushDataSeparation.class.getClassLoader().getResourceAsStream(mnpConfigFilename), properties);
    db1Session = mnpBuild.openSession(ExecutorType.BATCH, false);
    
    String encodeMnpPassword = properties.getProperty("db2.password");
    properties.setProperty("db2.password", Encoding.decoding(encodeMnpPassword, false));
    SqlSessionFactory mnpBuild = ssfb.build(PushDataSeparation.class.getClassLoader().getResourceAsStream(mnpConfigFilename), properties);
    db2Session = mnpBuild.openSession(ExecutorType.BATCH, false);
    SysConfigMapper sysConfigMapper = db1Session.getMapper(SysConfigMapper.class);
    sysConfigMapper.selectAll();
    
    

    mybatisCofig.properties

    数据库1
    db1.driver=oracle.jdbc.driver.OracleDriver
    db1.user=USERNAME
    db1.password=密文
    db1.url=jdbc:oracle:thin:@127.0.0.1:1521:db1
    db1.poolTimeToWait=2000
    db1.poolPingQuery=select sysdate from dual
    db1.poolPingEnabled=true
    db1.configFilename=db1MybatisConifg.xml
    数据库2
    db2.driver=oracle.jdbc.driver.OracleDriver
    db2.user=USERNAME
    db2.password=密文
    db2.url=jdbc:oracle:thin:@127.0.0.1:db1
    db2.poolTimeToWait=2000
    db2.poolPingQuery=select sysdate from dual
    db2.poolPingEnabled=true
    db2.configFilename=db2DbMybatisConifg.xml
    

    db1MybatisConifg.xml

    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
            <environments default="development">
                    <environment id="development">
                            <transactionManager type="JDBC" />
                            <dataSource type="POOLED">
                                    <property name="driver" value="${mnp.driver}" />
                                    <property name="url" value="${mnp.url}"/>
                                    <property name="username" value="${mnp.user}" />
                                    <property name="password" value="${mnp.password}" />
                                    <property name="poolPingEnabled" value="${mnp.poolPingEnabled}"/> 
                                    <property name="poolTimeToWait" value="${mnp.poolTimeToWait}"/>
                                    <property name="poolPingQuery" value="${mnp.poolPingQuery}" />
                            </dataSource>
                    </environment>
            </environments>
            <mappers>
             <mapper resource="com/sitech/ah/fiveGMsg/mapper/MsgInfoMapper.xml" />
             <mapper resource="com/sitech/ah/fiveGMsg/mapper/BusinessConfigMapper.xml" />
            </mappers>
    </configuration>
    

    异常1:
    【mybatis】=: Type interface com.sitech.ah.fiveGMsg.dao.SysConfigMapper is not known to the MapperRegistry

    SysConfigMapper sysConfigMapper = db1Session.getMapper(SysConfigMapper.class);
    sysConfigMapper.selectAll();
    

    原因:
    SysConfigMapper.xml未添加db1MybatisConifg.xml文件中去

    异常2

    ### Error building SqlSession.
    ### The error may exist in com/sitech/ah/fiveGMsg/mapper/WhileListSynMapper.xml
    ### The error occurred while processing mapper_resultMap[BaseResultMap]
    ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class . Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.sitech.ah.fiveGMsg.po.WhileListSyn'.  Cause: java.lang.ClassNotFoundException: Cannot find class: com.sitech.ah.fiveGMsg.po.WhileListSyn
    org.apache.ibatis.exceptions.PersistenceException: 
    ### Error building SqlSession.
    ### The error may exist in com/sitech/ah/fiveGMsg/mapper/WhileListSynMapper.xml
    ### The error occurred while processing mapper_resultMap[BaseResultMap]
    ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class . Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.sitech.ah.fiveGMsg.po.WhileListSyn'.  Cause: java.lang.ClassNotFoundException: Cannot find class: com.sitech.ah.fiveGMsg.po.WhileListSyn
    	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
    	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:50)
    	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:41)
    	at com.sitech.ah.fiveGMsg.util.DBSqlSessionFactory.mnpSqlSessionInit(DBSqlSessionFactory.java:107)
    	at com.sitech.ah.fiveGMsg.util.DBSqlSessionFactory.init(DBSqlSessionFactory.java:63)
    	at com.sitech.ah.fiveGMsg.util.DBSqlSessionFactory.<clinit>(DBSqlSessionFactory.java:54)
    	at com.sitech.ah.fiveGMsg.SynFileMainThread.run(SynFileMainThread.java:69)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: org.apache.ibatis.builder
    

    原因:
    mapper的xml配置文件命名空间类写错,修改为正确的类路径
    image

  • 相关阅读:
    Qt使用第三方库3rdparty
    Qt5.5以来对Network的改进(包括对SSL的功能支持,HTTP的重定向等等)
    ddd
    C# ICSharpCode.SharpZipLib
    OWIN
    C#/.NET code
    ABP启动配置
    Oracle表空间及分区表
    Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
    WebAPI使用多个xml文件生成帮助文档
  • 原文地址:https://www.cnblogs.com/ldd525/p/14784177.html
Copyright © 2020-2023  润新知