Spring Boot 2.1.2 创建动态数据库连接只是为了运行查询
Posted
技术标签:
【中文标题】Spring Boot 2.1.2 创建动态数据库连接只是为了运行查询【英文标题】:Spring Boot 2.1.2 Create dynamic DB connection just to run a query 【发布时间】:2019-12-30 16:09:24 【问题描述】:在Spring Boot 2.1.2项目中,application.properties中定义了一个默认的PostgreSQL db连接:
spring.datasource.url=jdbc:postgresql://host:port/dbName
spring.datasource.username=username
spring.datasource.password=pass
Postgre DB 没有任何问题,但是,我很少需要通过 JDBC 连接来连接另一个 DB (MsSql)。 我只需要运行一个查询,并从 mssql 表的视图中处理结果列表。 我尝试的是;
为 Mssql 将 jdbc 驱动程序添加到 Pom.xml:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.2.1.jre11</version>
<scope>test</scope>
</dependency>
连接到 sql-server 并运行查询:
@GetMapping(path = "/getKonteynersFromSifirAtikServis/", produces = "application/json")
public ResponseEntity<ResponseStatusDto> getKonteynersFromSifirAtikServis()
try
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
dataSource.setUrl("jdbc:mysql://host:1433/msDbName");
dataSource.setUsername("ms_user");
dataSource.setPassword("ms_pass");
JdbcTemplate template = new JdbcTemplate(dataSource);
SqlRowSet sqlRowSet = template.queryForRowSet("SELECT * FROM dbo.viewName;");
catch (Exception e)
return new ResponseEntity<ResponseStatusDto>(ResponseStatusDto.createErrorDto(e.getMessage(), e), HttpStatus.ACCEPTED);
这不起作用。它抛出:
Could not load JDBC driver class [com.microsoft.sqlserver.jdbc.SQLServerDriver]
我一直很难在 pom 定义中加载 mssql-jdbc。已解决制作版本 7.2.1.jre11。
【问题讨论】:
试用版本 7.4.1.jre8 依赖的范围设置为 test 。删除相同并尝试运行 【参考方案1】:依赖范围设置为test。
test 这个范围表示不需要依赖 应用正常使用,仅供测试使用 编译和执行阶段。这个范围是不可传递的。
删除相同并尝试运行
【讨论】:
上帝保佑你!默认情况下,maven 依赖项是作用域测试,我没有意识到它会阻止访问编译作用域。现在,它可以使用驱动程序,但是,此时,我得到:com.microsoft.sqlserver.jdbc.SQLServerException:端口号 1433/DbName 无效,即使我可以通过 DBeaver 使用相同的设置进行访问。我已经检查过防火墙上启用了 IntelliJ 和 Java 服务... 使用的连接URL是mysql格式。从细节来看,我假设您正在连接到 Microsoft SQL Server。请检查以下 URL 以识别正确的格式:alvinalexander.com/java/…。 db_url = jdbc:microsoft:sqlserver://HOST:1433;DatabaseName=DATABASE 哦..你是对的:jdbc:sqlserver://HOST:1433;databaseName=DBNAME 工作...谢谢。 很高兴能帮上忙!祝你新年快乐以上是关于Spring Boot 2.1.2 创建动态数据库连接只是为了运行查询的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot创建动态数据源:当前正在创建请求的bean:是否存在无法解析的循环引用?
当我进行 Rest api 调用时,使用 Spring Boot 动态创建列/表