Mybatis连接DB2数据库

    前一阵子做了一个与DB2相关操作的项目,项目架构是SpringBoot+Mybatis+DB2。之前一直使用Mysql未接触DB2,搭建配置过程中也是在网上一点点找资料,遇到了好多坑,现项目基本稳定运行,总结一下MyBatis配置连接DB2的过程。

springBoot+Mybatis

    首先搭建项目的整体框架,即springBoot与Mybatis。
    springBoot采用IDEA自动生成SpringBoot的方式File->New生成,并根据项目规范做出一定配置更改,这不是本文重点,关于SpringBoot的文章有好多,出现问题可csdn。
     工程创建完成后,进行Mybatis的配置。首先在pom.xml的dependencies中添加mybatis的依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependncy>    

配置后记得在maven中更新下引入依赖。

DB2

pom.xml中引入db2的配置信息:

<dependency>
    <groupId>com.ibm.db2</groupId>
    <artifactId>db2jcc4</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>自己创建的存放db2jcc4.jar路径</systemPath>
</dependncy>
<dependency>
    <groupId>com.ibm.db2</groupId>
    <artifactId>db2jcc_license_cu</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>自己创建路径存放db2jcc_license_cu.jar路径</systemPath>
</dependncy>    

其中db2jcc4.jar与db2jcc_license_cu.jar是db2的驱动包,他们不在标准maven中需手动添加到工程中,通过systemPath指明路径进行引用。db2的驱动包下载地址,不方便下载可留言稍邮箱稍后发给你。之前有使用过db2jcc.jar,启动的时候报了错:java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z,改用db2jcc4.jar后错误排除。

    引入jar包后,在application.properties进行jdbc配置。

spring.datasource.driverClassName=com.ibm.db2.jcc.DB2Driver
spring.datasource.url=jdbc:db2://"db2的ip""端口号"/"数据库名称"
spring.datasource.username="db2用户名"
spring.datasource.password="db2密码"

由此配置工作完成了,接下来可以在mapper中像mysql的方式写db2的sql语句,db2存在tablespace的概念,使用表时select * from tablespace.table1。

本人也是刚刚接触db2数据库,如有问题尚请指正,共同学习,一起进步

MyBatis可以通过配置多个数据源来连接多个数据库。下面是一些实现方式: ### 1. 使用多个SqlSessionFactory 在MyBatis中,每个SqlSessionFactory实例都可以连接一个数据源。因此,我们可以创建多个SqlSessionFactory实例,每个实例连接一个数据库。下面是一个示例: ```java // 创建第一个SqlSessionFactory DataSource dataSource1 = ... // 数据源1 TransactionFactory transactionFactory1 = new JdbcTransactionFactory(); Environment environment1 = new Environment("development", transactionFactory1, dataSource1); Configuration configuration1 = new Configuration(environment1); configuration1.addMapper(UserMapper.class); SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(configuration1); // 创建第二个SqlSessionFactory DataSource dataSource2 = ... // 数据源2 TransactionFactory transactionFactory2 = new JdbcTransactionFactory(); Environment environment2 = new Environment("development", transactionFactory2, dataSource2); Configuration configuration2 = new Configuration(environment2); configuration2.addMapper(OrderMapper.class); SqlSessionFactory sqlSessionFactory2 = new SqlSessionFactoryBuilder().build(configuration2); // 使用第一个SqlSessionFactory SqlSession sqlSession1 = sqlSessionFactory1.openSession(); UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class); ... // 使用第二个SqlSessionFactory SqlSession sqlSession2 = sqlSessionFactory2.openSession(); OrderMapper orderMapper2 = sqlSession2.getMapper(OrderMapper.class); ... ``` ### 2. 使用多个数据源 MyBatis也支持使用多个数据源。我们可以在配置文件中定义多个数据源,并为每个数据源配置一个SqlSessionFactory。下面是一个示例: ```xml <!-- 数据源1的配置 --> <bean id="dataSource1" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db1"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <!-- 数据源2的配置 --> <bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db2"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <!-- SqlSessionFactory1的配置 --> <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource1"/> ... </bean> <!-- SqlSessionFactory2的配置 --> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource2"/> ... </bean> <!-- MapperScannerConfigurer的配置 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper1"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory1"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper2"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory2"/> </bean> ``` 在上面的配置中,我们定义了两个数据源(dataSource1和dataSource2),并为每个数据源配置了一个SqlSessionFactory(sqlSessionFactory1和sqlSessionFactory2)。然后,我们使用MapperScannerConfigurer配置了两个MapperScannerConfigurer实例,分别扫描两个Mapper包,并将它们与不同的SqlSessionFactory关联。这样,我们就可以使用不同的Mapper操作不同的数据库
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值