您现在的位置是:主页 > news > 如何用自己电脑做网站/抖音关键词查询工具

如何用自己电脑做网站/抖音关键词查询工具

admin2025/4/27 2:08:41news

简介如何用自己电脑做网站,抖音关键词查询工具,做网站 bs cs,最好的微网站建设公司文章目录前言一、Maven引入Druid和数据库驱动二、application.properties中设置数据库访问参数三、编写数据源的配置文件1.数据源1配置文件示例四、关闭数据源自动设置建议其他前言 项目中有访问多个数据源的需求 一、Maven引入Druid和数据库驱动 <!-- Druid 数据连接池依赖…

如何用自己电脑做网站,抖音关键词查询工具,做网站 bs cs,最好的微网站建设公司文章目录前言一、Maven引入Druid和数据库驱动二、application.properties中设置数据库访问参数三、编写数据源的配置文件1.数据源1配置文件示例四、关闭数据源自动设置建议其他前言 项目中有访问多个数据源的需求 一、Maven引入Druid和数据库驱动 <!-- Druid 数据连接池依赖…

文章目录

  • 前言
  • 一、Maven引入Druid和数据库驱动
  • 二、application.properties中设置数据库访问参数
  • 三、编写数据源的配置文件
    • 1.数据源1配置文件示例
  • 四、关闭数据源自动设置
  • 建议
  • 其他


前言

项目中有访问多个数据源的需求


一、Maven引入Druid和数据库驱动

 <!-- Druid 数据连接池依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.18</version></dependency>

驱动请自行选择合适的驱动

二、application.properties中设置数据库访问参数

可以自定义参数,因为这些参数不是用于Spring Boot自动注入数据源的,而是之后需要我们手动引用他们

#mysql1
mysql1.datasource.driverClassName=com.mysql.jdbc.Driver
mysql1.datasource.url=jdbc:mysql://localhost:3306/db1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
mysql1.datasource.username=root
mysql1.datasource.password=123456#mysql2
mysql2.datasource.driverClassName=com.mysql.jdbc.Driver
mysql2.datasource.url=jdbc:mysql://localhost:3306/db2?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
mysql2.datasource.username=root
mysql2.datasource.password=123456

三、编写数据源的配置文件

1.数据源1配置文件示例

@Configuration
@MapperScan(basePackages = DB1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "DB1SqlSessionFactory")
public class DB1DataSourceConfig {// 存放Mapper的包,项目中Mapper使用@Mapper注解static final String PACKAGE = "com.naristc.scsdeci.mapper.mysql1";@Value("${mysql1.datasource.url}")private String url;@Value("${mysql1.datasource.username}")private String user;@Value("${mysql1.datasource.password}")private String password;@Value("${mysql1.datasource.driverClassName}")private String driverClass;// 配置数据源连接参数@Bean(name = "DB1DataSource")public DruidDataSource DB1DataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driverClass);dataSource.setValidationQuery("SELECT 1");dataSource.setUrl(url);dataSource.setUsername(user);dataSource.setPassword(password);return dataSource;}@Bean(name = "DB1TransactionManager")public DataSourceTransactionManager DB1TransactionManager() {return new DataSourceTransactionManager(DB1DataSource());}// SessionFactory@Bean(name = "DB1SqlSessionFactory")public SqlSessionFactory DB1SqlSessionFactory() throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(DB1DataSource());return sqlSessionFactoryBean.getObject();}@Beanpublic SqlSessionTemplate DB1SqlSessionTemplate() throws Exception {SqlSessionTemplate template = new SqlSessionTemplate(DB1SqlSessionFactory());return template;}
}

注:网上有其他的博客有提到,在多数据源的情况下,一般选定一个作为主数据源,在主数据源的工厂上要加上@Primary注解,但是实际上我在不写的情况下目前并没有出现异常,如果之后有出现问题,再更新。

一个数据源一个配置文件


四、关闭数据源自动设置

因为SpringBoot默认是单数据源的,所以我们需要关闭这种自动设置
@SpringBootApplication注解中,加入exclude参数

// 由于Spring Boot默认单数据源,所以在启动类中需要使用注解去除该默认项
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class ScsdeciApp extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure (SpringApplicationBuilder builder){// 注意这里要指向原先用main方法执行的Application启动类return builder.sources(ScsdeciApp.class);}public static void main(String[] args) {SpringApplication.run(ScsdeciApp.class, args);}
}

建议

数据源的配置文件是设定一个或多个包然后扫描其中的Mapper,建议将不同数据源的模型、实例、Mapper等分开存放,不容易因名字相近或相同搞混。
目录结构示例

其他

虽然并不影响程序运行,但是Druid确实会报出一个错误,如图所示:
Druid确实会报出一个错误
这句是什么意思呢?
testWhileIdle字面上翻译理解为:在空闲时,程序需要去做查询来检测连接状态;
而validationQuery这句的意思是这种检测连接状态的查询没有设置。
网上有博客解决这个问题的方法是在application.properties中加入一句
未能解决问题
这个方法或许以前能行得通,但是现在不行了,因为SpringBoot在新的版本不会自动地注入Druid数据源了,当然在application.properties中设置也就,没有用了。

而且,我们这样配置多个数据源,本来就是手动配置而不是SpringBoot自动注入数据源Bean的。

所以,在每一个数据库的Config文件中,都设置一下数据源的这个validationQuery参数,就可以解决这个问题:

dataSource.setValidationQuery("SELECT 1");

当然,从另一个角度讲,也可以关闭检测连接状态,那样也就不需要设置这个查询语句了:

dataSource.setTestWhileIdle(false);

两者选一就可以了,当然我更倾向于第一种方法