首先,在pom.xml文件中添加oracle驱动和druid依赖:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.18</version>
</dependency>

然后在Spring配置文件中配置第二个数据源:

<bean id="secondDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
    <property name="username" value="username"/>
    <property name="password" value="password"/>
</bean>

接着,配置SessionFactory和事务管理器:

<bean id="secondSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="secondDataSource"/>
    <property name="packagesToScan">
        <list>
            <value>com.example.entity</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
        </props>
    </property>
</bean>

<bean id="secondTransactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="secondSessionFactory"/>
</bean>

最后,在需要使用第二个数据源的地方注入SessionFactory,并使用Hibernate的Criteria实现分页查询:

@Autowired
@Qualifier("secondSessionFactory")
private SessionFactory secondSessionFactory;

@Transactional(transactionManager = "secondTransactionManager", readOnly = true)
public List<SecondEntity> getSecondEntities(int pageNumber, int pageSize) {
    Session session = secondSessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(SecondEntity.class);
    criteria.setFirstResult((pageNumber - 1) * pageSize);
    criteria.setMaxResults(pageSize);
    return criteria.list();
}

其中,SecondEntity为第二个数据源中的实体类

springMVC使用Alibabadruid新增第二个数据源为oracle数据库在java代码中通过SessionFactory实现分页查询第二个数据源中表的数据

原文地址: https://www.cveoy.top/t/topic/eChs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录