`
y806839048
  • 浏览: 1117073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring4(springboot)的多数据源配置

阅读更多

1,用切面的方式注解区别,在切面中切换执行的数据源

 

2,不同的文件夹不同的mapper扫描,不同的mapper不同的数据源模板

 

 

 

下面是2实例:

 

1 使用mybatis注解需要的配置。如下面的代码所示,使用@MapperScan来扫描注册mybatis数据库接口类,其中basePackages属性表明接口类所在的包,sqlSessionTemplateRef表明接口类使用的SqlSessionTemplate。如果项目需要配置两个数据库,@MapperScan也需要分别配置。

 

@Configuration

@MapperScan(basePackages = "com.tigerobo.mysteel.du.table.mapper.index", sqlSessionTemplateRef = "indexSqlSessionTemplate")

public class IndexMybatisConfiguration {

 

    @Bean(name = "indexSqlSessionTemplate")

    @Primary

public SqlSessionTemplate sqlSessionTemplate(@Qualifier("indexSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {

        return new SqlSessionTemplate(sqlSessionFactory);

}

 

    @Bean(name = "indexSqlSessionFactory")

    @Primary

public SqlSessionFactory sqlSessionFactory(@Qualifier("indexDataSource") DataSource dataSource) throws Exception {

 

        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

bean.setConfigLocation(resolver.getResource("classpath:mybatis/mybatis-config.xml"));

bean.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/index/*.*"));

        return bean.getObject();

}

 

    @Bean(name = "indexDataSource")

    @ConfigurationProperties(prefix = "db.index")

    public DataSource dataSource() {

        return DataSourceBuilder.create().build();

}

}

 

package com.tigerobo.mysteel.du.table.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.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration

@MapperScan(basePackages = "com.tigerobo.mysteel.du.table.mapper.news", sqlSessionTemplateRef = "newsSqlSessionTemplate")

public class NewsMybatisConfiguration {

 

    @Bean(name = "newsSqlSessionTemplate")

    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("newsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {

        return new SqlSessionTemplate(sqlSessionFactory);

}

 

    @Bean(name = "newsSqlSessionFactory")

    public SqlSessionFactory sqlSessionFactory(@Qualifier("newsDataSource") DataSource dataSource) throws Exception {

 

        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

bean.setConfigLocation(resolver.getResource("classpath:mybatis/mybatis-config.xml"));

bean.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/news/*.xml"));

        return bean.getObject();

}

 

    @Bean(name = "newsDataSource")

    @ConfigurationProperties(prefix = "db.news")

    public DataSource dataSource() {

        return DataSourceBuilder.create().build();

}

}

 

 

2 mybatis注解介绍

mybatis3支持多个java注解,下面介绍几个基本的注解。

@Insert

 

 @Insert("insert into t_user(name,age,gender) values (#{name},#{age},#{gender})")

 public int addUser(User user) throws DataAccessException;

如上面的代码所示,使用@Insert注解可以在()中直接写sql语句,传参可以用#{}实现,其中name字段名直接对应User类中的name字段,肿么样,有没有很直观方便:)

 

@Select

 

@Select("select age,gender from t_user where name={name}")

public User queryUser(String name) throws DataAccessException;

@Select 注解所查询出的字段可以直接绑定到User类中对应的字段中,由于在类中可以import对应的类,免去了在xml中配置结果集的麻烦。

 

@SelectKey

 

 @SelectKey(statement = "select max(id) from t_id", before = true, resultType = long.class, keyProperty = "id")

 @Insert("insert into t_user(id,name,age,gender) values (#{id},#{name},#{age},#{gender})")

 public int addUser(User user) throws DataAccessException;

@SelectKey注解用于查询一下需要的前置字段,如上面的代码所示先查出id字段的值,然后插入到t_user表中,一般配合@Insert和@Update

注解使用。

分享到:
评论

相关推荐

    springboot多数据源配置

    在Spring Boot应用中,多数据源配置是一项重要的技术实践,特别是在大型系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或是分布式事务管理。Spring Boot以其强大的自动化配置能力,使得设置多数据源变得...

    SpringBoot配置多数据源实现动态切换数据源

    多数据源配置允许我们灵活地管理这些数据。 SpringBoot实现多数据源主要依靠Spring的`@Configuration`和`@DataSourceConfiguration`注解,以及Spring JDBC的`DataSource`接口。下面是一个基本的配置示例: ```java...

    springboot多数据源配置(sqlserver,mysql)

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们连接并操作多个数据库,例如MySQL和SQL Server。在本场景中,我们将探讨如何在Spring Boot中设置和管理这样的多数据源配置。 首先,我们需要了解`...

    springboot多数据源即分布式事务解决方案

    SpringBoot作为一款轻量级的框架,提供了便捷的多数据源配置和分布式事务管理方案,使得开发者能够高效地管理和操作不同的数据库。本文将详细探讨SpringBoot如何实现多数据源以及分布式事务。 首先,我们要理解什么...

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    对于多数据源,我们需要创建多个数据源配置,例如: ```yaml spring: datasource: primary: url: jdbc:mysql://localhost:3306/main_db username: root password: password driver-class-name: ...

    springboot 多数据源

    在Spring Boot应用中,多数据源的配置与管理是一个常见的需求,特别是在大型系统中,可能需要连接多个数据库,比如主数据库用于高频读写操作,从数据库用于数据分析或备份。本示例将详细介绍如何使用Spring Boot的...

    SpringBoot多数据源案例

    你需要为每个数据源配置一个事务管理器,并确保在事务开始时选择正确的数据源。 6. **测试与实践**: 为了验证多数据源的配置是否正确,可以编写单元测试或集成测试,模拟对两个数据源的增删改查操作,确保数据被...

    springboot多数据源即分布式事务解决方案,添加对多线程的支持

    1. 数据源配置:包含不同数据源的配置文件,如上面提到的`application.yml`。 2. 事务管理器配置:定义并配置了多数据源对应的事务管理器。 3. 业务逻辑层:使用`@Transactional`注解标记事务边界,可能还使用了`@...

    Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

    Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...

    SpringBoot多数据源框架【整合配置及应用】.docx

    在 SpringBoot 中,我们可以使用 `spring.datasource` 配置数据源参数,其中包括了多数据源配置。 ``` spring: datasource: dynamic: primary: master datasource: master: driver-class-name: org.sqlite....

    springboot + mybatis 多数据源demo

    总结,Spring Boot结合MyBatis的多数据源配置为企业级应用提供了强大的数据库管理能力。通过灵活的配置和智能的路由策略,开发者可以轻松地处理复杂的数据源切换需求,提升系统的健壮性和可扩展性。实践这个示例,将...

    Springboot+mybatis+druid多数据源配置(oracle+mybatis)

    本篇将详细讲解如何在Spring Boot项目中结合Mybatis和Druid实现多数据源配置,以支持Oracle和MySQL两种数据库,并进行数据库的分离调试。 首先,我们要理解Spring Boot的自动配置机制。Spring Boot通过扫描`@...

    springboot多数据源demo

    综上所述,"springboot多数据源demo"项目涵盖了Spring Boot中实现多数据源的关键步骤,包括数据源配置、JdbcTemplate或JPA的创建、事务管理以及数据源的动态切换。这个示例对于学习和实践Spring Boot的多数据源处理...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    本示例主要讲解如何使用Spring Boot结合MyBatis实现多数据源切换,并确保AOP事务管理仍然有效。 首先,我们需要配置多数据源。在Spring Boot中,可以使用`DataSource`接口的实现类,如`HikariCP`或`Druid`,创建两...

    SpringBoot多数据源成果源代码.rar

    综上所述,"SpringBoot多数据源成果源代码"项目提供了Spring Boot环境下多数据源配置和应用的实践经验,对于理解和掌握这一技术有极大的帮助。通过深入研究源代码,开发者可以学到如何在实际项目中灵活地管理和使用...

    springboot多数据源整合

    1. **数据源配置**:在Spring Boot中,我们可以通过`application.yml`或`application.properties`文件来配置多个数据源。每个数据源需要指定相应的数据库连接信息,包括URL、用户名、密码以及驱动类名。例如: ```...

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。一个基于springboot的快速集成多数据源的启动器。支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库...

    SpringBoot 多数据源

    1. **配置多数据源**:在SpringBoot中,我们可以使用`@ConfigurationProperties`注解来自定义数据源配置。例如,为两个数据库分别配置名为`primary`和`secondary`的数据源: ```java @Configuration @...

Global site tag (gtag.js) - Google Analytics