SpringBoot+vue 创建CRM财务系统,根据用户登录的注册号,动态判断属于哪个数据库连接,使用sqlserver odbc驱动

使用 Spring Boot 和 Vue 构建 CRM 财务系统时,基于用户登录时的注册号动态选择数据库连接,并使用 SQL Server ODBC 驱动进行数据库操作,可以通过以下几个步骤来实现。

目录

1. 配置 Spring Boot 动态数据源

1.1. 引入依赖

1.2. 配置动态数据源

1.3. 数据源上下文持有类

1.4. 配置多个数据源

1.5. 在登录时设置数据源

2. 配置 Vue 前端

3. 连接 SQL Server ODBC 驱动

4. 总结


1. 配置 Spring Boot 动态数据源

首先,我们需要配置 Spring Boot 动态数据源,根据用户登录时的注册号选择数据库连接。

1.1. 引入依赖

pom.xml 中引入相关的依赖:


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
    
        org.springframework.boot
        spring-boot-starter-data-jpa
    
    
    
    
        com.microsoft.sqlserver
        mssql-jdbc
    

    
    
        com.zaxxer
        HikariCP
    

1.2. 配置动态数据源

Spring Boot 默认是通过 application.propertiesapplication.yml 配置数据源,但我们需要根据用户的注册号来动态选择数据源。我们可以使用 AbstractRoutingDataSource 来实现动态数据源切换。

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        // 这里可以根据当前线程的上下文来动态获取用户的注册号
        return DataSourceContextHolder.getDataSource();
    }
}
1.3. 数据源上下文持有类

DataSourceContextHolder 类用于存储当前线程的注册号,以便在后续的数据库查询中可以获取当前要使用的数据库连接。

public class DataSourceContextHolder {
    
    private static final ThreadLocal contextHolder = new ThreadLocal<>();

    public static void setDataSource(String registerNo) {
        contextHolder.set(registerNo);
    }

    public static String getDataSource() {
        return contextHolder.get();
    }

    public static void clearDataSource() {
        contextHolder.remove();
    }
}
1.4. 配置多个数据源

在 Spring Boot 配置类中,我们需要创建多个数据源并通过 DynamicDataSource 来进行管理。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        
        // 配置默认数据源
        DataSource defaultDataSource = createDataSource("jdbc:sqlserver://localhost;DatabaseName=defaultDB");
        dynamicDataSource.setDefaultTargetDataSource(defaultDataSource);
        
        // 配置其他数据源
        Map targetDataSources = new HashMap<>();
        targetDataSources.put("registerNo1", createDataSource("jdbc:sqlserver://localhost;DatabaseName=DB1"));
        targetDataSources.put("registerNo2", createDataSource("jdbc:sqlserver://localhost;DatabaseName=DB2"));
        
        dynamicDataSource.setTargetDataSources(targetDataSources);
        
        return dynamicDataSource;
    }

    private DataSource createDataSource(String url) {
        // 使用 SQLServer 驱动配置数据源
        // 你可以使用 HikariCP 或其他连接池来优化数据库连接
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(url);
        dataSource.setUsername("yourUsername");
        dataSource.setPassword("yourPassword");
        return dataSource;
    }
}

1.5. 在登录时设置数据源

在用户登录后,我们需要通过注册号来设置数据源。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@RestController
public class LoginController {

    @PostMapping("/login")
    public ResponseEntity login(@RequestParam String registerNo) {
        // 根据用户注册号动态设置数据源
        DataSourceContextHolder.setDataSource(registerNo);

        // 登录逻辑代码...
        return ResponseEntity.ok("Login successful");
    }
}

2. 配置 Vue 前端

在前端 Vue.js 部分,你可以创建一个登录页面,让用户输入注册号并发送请求到 Spring Boot 后端。




3. 连接 SQL Server ODBC 驱动

如果你需要通过 ODBC 连接 SQL Server,而不是直接使用 JDBC,你需要在数据库连接字符串中配置 ODBC 数据源名称(DSN)。以下是如何使用 ODBC 驱动进行连接:

1.在 application.propertiesapplication.yml 中配置 ODBC 连接。

spring.datasource.url=jdbc:odbc:DSN=your_dsn_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

2.在 DataSourceConfig 中调整为使用 ODBC 驱动的连接字符串。

private DataSource createDataSource(String dsn) {
    HikariDataSource dataSource = new HikariDataSource();
    dataSource.setJdbcUrl("jdbc:odbc:" + dsn); // ODBC 连接
    dataSource.setUsername("yourUsername");
    dataSource.setPassword("yourPassword");
    return dataSource;
}

4. 总结

通过这种方式,Spring Boot 可以根据用户登录的注册号动态切换数据库,确保不同的用户访问不同的数据库。

  1. 动态数据源切换:通过 AbstractRoutingDataSource 来实现。
  2. 注册号决定数据源:通过 DataSourceContextHolder 管理当前的数据源。
  3. 前端与后端交互:Vue.js 提交注册号到后端,后端根据注册号切换数据源。

你可能感兴趣的:(数据库,spring,boot,vue.js)