SpringBoot中如何动态切换Sqlite3数据库
分类:计算机 | 数据库 | 综合 1652
更新:2021-03-18 17:46:15编辑
SpringBoot中访问Sqlite数据库的数据源配置类如下:
package com.yuanjingyan.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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.sqlite.SQLiteDataSource;
import javax.sql.DataSource;
//表示这个类是一个配置类
@Configuration
//配置mybatis接口类放置的地方
@MapperScan(basePackages = "com.yuanjingyan.mappersqlite", sqlSessionFactoryRef = "sqliteSqlSessionFactory")
public class SqliteDataSourceConfig {
//将这个对象放入Spring容器中
@Bean(name = "sqliteDataSource")
//读取yml中的数据库配置参数,映射成为一个对象,prefix表示参数的前缀
@ConfigurationProperties(prefix="spring.sqlitedatasource") //告诉自动加载配置的属性
public DataSource sqlserverDataSource() {
SQLiteDataSource ds=new SQLiteDataSource();
return ds;
}
@Bean(name = "sqliteDataSource")
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.sqlite.JDBC");
//初始化时指定一个sqlite数据库路径,后面可以进行修改
dataSource.setUrl("jdbc:sqlite:C:\\Users\\Administrator\\Desktop\\test.db");
dataSource.setUsername("");
dataSource.setPassword("");
return dataSource;
}
@Bean(name = "sqliteSqlSessionFactory")
// @Qualifier表示查找Spring容器中名字为sqliteDataSource的对象
public SqlSessionFactory sqliteSqlSessionFactory(@Qualifier("sqliteDataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
// 设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:sqlitemybatis/*.xml"));
return bean.getObject();
}
@Bean("sqliteSqlSessionTemplate")
public SqlSessionTemplate sqlitesqlsessiontemplate(
@Qualifier("sqliteSqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
}
}
在使用的时候,使用DriverManagerDataSource的setUrl方法设置新的sqlite数据源的路径即可切换数据库。
@Autowired
private DriverManagerDataSource dataSource;
dataSource.setUrl("jdbc:sqlite:" + newFilePath);
//可以操作新的数据库
...
猿导航
阅读排行榜
- 1vue和el-table使用经验-如何刷新表格数据10979
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9532
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7302
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5889
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5502
- 6Intellij IDEA下的版本控制VCS的启用与关闭4943
- 7Spring学习经验—@ResponseBody注解的使用说明4917
- 8Druid异常解决经验—java.sql.SQLException url not set4539
- 9如何用批处理命令(bat脚本)启动和停止windows服务4314
- 10nuxt.js项目中如何添加和使用全局变量4178
- 11解决SpringBoot使用maven下载不了jar包的问题3514
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3415
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3263
- 14在Nuxt.js项目的head中引用外部js文件3103
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3083