SpringBoot项目中配置数据源
一、在pom文件中添加MySQL的依赖
二、在 resources文件下新建一个yml文件,并且在yml文件中添加配置数据库连接,如果是使用,MySQL分库分表,则需要配置多数据源,如下:
关于数据库连接配置的详情,点击 进行查看
三、配置数据源信息 DataSourceConfig:这里需要有2个配置,配置猪数据源
四、配置JdbcTemplateDataSourceConfig 数据源,这里需要单独的1个配置就可以了
五、如果进行多数据源的配置,则需要对每一一个数据源进行单独的配置以及指定改数据源指定扫描的xml的文件路径:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kNSiy2D-1618195599605)(] )
1. 在类上添加注解,并指定mapper包的扫描位置
@Configuration @MapperScan(basePackages = “com.nantian.oa.modular.system.mapper”,sqlSessionTemplateRef = “ds1SqlSessionTemplate”)
2. 主数据源的配置
//主数据源 ds1数据源 @Primary @Bean(“ds1SqlSessionFactory”) public SqlSessionFactory ds1SqlSessionFactory(@Qualifier(“ds1DataSource”) DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(); //注入要使用的数据源 sqlSessionFactory.setDataSource(dataSource); //创建配置类(这个类包含了mybatis的所有配置信息) MybatisConfiguration configuration = new MybatisConfiguration(); //指定动态SQL生成的默认语言 configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class); //标注设置为空的数据 configuration.setJdbcTypeForNull(JdbcType.NULL); //把配置好的新配置信息放进去 sqlSessionFactory.setConfiguration(configuration); //标注sqlSession去哪里扫描mapper文件 sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver(). getResources(“classpath:com/mapper/mapping/*.xml”)); //给sqlSession装插件,这里加装的是分页插件 sqlSessionFactory.setPlugins(new Interceptor[]{ new PaginationInterceptor() // new PerformanceInterceptor() // .setFormat(false), }); //标注不开启 LOGO sqlSessionFactory.setGlobalConfig(new GlobalConfig().setBanner(false)); return sqlSessionFactory.getObject(); }
3. 新建一个事务管理器,对数据源进行管理,对JDBC(Java Data Base Connectivity,java数据库连接)进行事务管理,在spring中是对JdbcTemplate进行事务管理
@Primary @Bean(name = “ds1TransactionManager”) public DataSourceTransactionManager ds1TransactionManager(@Qualifier(“ds1DataSource”) DataSource dataSource) { return new DataSourceTransactionManager(dataSource); }
4. SqlSessionTemplate是MyBatis-Spring的核心。这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常。SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用。当调用SQL方法时,包含从映射器getMapper()方法返回的方法,SqlSessionTemplate将会保证使用的SqlSession是和当前Spring的事务相关的。此外,它管理session的生命周期,包含必要的关闭,提交或回滚操作。
SqlSessionTemplate实现了SqlSession,这就是说要对MyBatis的SqlSession进行简易替换。 SqlSessionTemplate通常是被用来替代默认的MyBatis实现的DefaultSqlSession,因为它不能参与到Spring的事务中也不能被注入,因为它是线程不安全的。相同应用程序中两个类之间的转换可能会引起数据一致性的问题。 SqlSessionTemplate对象可以使用SqlSessionFactory作为构造方法的参数来创建。
六、完成
下一篇:
MySQL获取当前时间的各种方式