1. 首先在application中配置数据源地址

my.datasource.koi.type=com.alibaba.druid.pool.DruidDataSource
my.datasource.koi.url=jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=true
my.datasource.koi.username=root
my.datasource.koi.password=123456
my.datasource.koi.driverClassName=com.mysql.jdbc.Driver

  

2. 在@Bean中 new DataSource的地址空间

@Configuration
public class KOIDataSourceConfig { @Resource
private DataSourceFactory dataSourceFactory; @Bean(name = "koiDataSource")
@ConfigurationProperties(prefix = "my.datasource.koi")
public DruidDataSource createDataSource() {
return dataSourceFactory.create();
}
// dataSourceFactory.create() : DruidDataSource dataSource = new DruidDataSource(); @Bean(name = "jdbcTemplate")
public JdbcTemplate createSqlSessionTemplate(@Qualifier("koiDataSource") DruidDataSource druidDataSource) {
return new JdbcTemplate(druidDataSource);
}
}

  

3.  在Service中直接使用即可

@Service
public class KOISchedulerImpl implements KOIScheduler{ @Resource
private JdbcTemplate jdbcTemplate; @Transactional
@Override
public void set_task_and_run(SQLPool pool, String config_path) { ExecuteSQL.prepare_and_execut_sql(pool, config_path); } @Transactional
@Override
public void startSchedulerTaskByDruid(String configPath) {
jdbcTemplate.execute("INSERT INTO mydata.`test` (id) VALUE(1);");
}
}

  

读取application中的配置信息:

1.  在application中配置  spring.sql.path = E://z

2.  定义一个Component类

@Component
public class QualityRecode { @Value("${spring.sql.path}")
private String sqlPath; public QualityRecode() {} public String getSqlPath() {
return sqlPath;
} public void setSqlPath(String sqlPath) {
this.sqlPath = sqlPath;
}
} 3. 在Controller中实例化该类, 获取数据 @Resource
private QualityRecode recode; recode.getSqlPath()

  

4.  使用Mapper读取 写入数据

1.  先在application配置数据源信息

2.  配置数据源config类

@Configuration
@MapperScan(basePackages = "com.nio.mapper.dcs", sqlSessionTemplateRef = "dcsSqlSessionTemplate")
public class DcsDataSourceConfig { @Resource
private DataSourceFactory dataSourceFactory; @Bean(name = "dcsDataSource")
@ConfigurationProperties(prefix = "my.datasource.dcs")
public DruidDataSource createDataSource() {
return dataSourceFactory.create();
} @Bean(name = "dcsSqlSessionFactory")
public SqlSessionFactory createSqlSessionFactory(@Qualifier("dcsDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/dcs/*.xml"));
return bean.getObject();
} // @Bean(name = "cmsTransactionManager")
// public DataSourceTransactionManager createTransactionManager(@Qualifier("cmsDataSource") DataSource dataSource) {
// return new DataSourceTransactionManager(dataSource);
// } @Bean(name = "dcsSqlSessionTemplate")
public SqlSessionTemplate createSqlSessionTemplate(@Qualifier("dcsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
} 3. 创建实体类 接收表传来的数据 4. 编辑Mapper类, 创建查询-插入方法 public interface CmsMapper {
List<PostEntity> getPostEntityList();
List<PostEntity> getLatestPostEntityList(@Param("yesterdayTimeStamp") Long yesterdayTimeStamp,
@Param("currentTimeStamp") Long currentTimeStamp); void insertError(@Param("TaskLogRecordEntity") List<TaskLogRecord> taskLogRecords);
} 5. 实现Mapper类 <select id="getPostEntityList" resultType="com.nio.entities.PostEntity">
SELECT
up.account_id AS accountId,
up.create_time AS updateTime,
up.content,
up.like_count AS likeCount,
up.comment_count AS commentCount,
lu.`name` AS nickName
FROM
lifestyle_prod.user_post up
LEFT JOIN lifestyle_prod.livestream_user lu ON up.account_id = lu.user_id
WHERE
up.STATUS = 1
AND up.resource_type = 'user_post'
AND lu.supplier = 'rongyun'
AND up.create_time >= #{yesterdayTimeStamp}
AND up.create_time <![CDATA[<=]]> #{currentTimeStamp}
</select> <insert id="insertError">
insert into `task_log_record`
(
id,task_type,execute_time,error_info
)
values
<foreach collection="TaskLogRecordEntity" item="error" separator=",">
(
#{error.id},
#{error.task_type},
#{error.execute_time},
#{error.error_info}
)
</foreach>
</insert>

  

6.  需要注意的问题:

1.  当查询一个原表中不存在,  但需要写在中间实体的,  指标查询表时:

例如, MySQL   该表只有一个字段 id ,   在计算之后, 生成

public class TestEntity {

    private long id2;

    private long id3;

}

Mapper应写成:  

    <select id="getTest" resultType="com.nio.entities.TestEntity">

    select t.id + 3 id2, t.id +1 id3 from
(select 2 id from test) t
</select> ## select 的值, 必须与实体类名一致, 而不是表中字段的名;

  

springboot使用多数据源以及配置的更多相关文章

  1. springBoot与多数据源的配置

    http://www.cnblogs.com/shenlanzhizun/p/5846475.html 最近有点忙,更新有点慢.今天进来说说一说springBoot中如何配置多数据源. 第一,新建一个 ...

  2. Springboot+Mybatis+Pagehelper+Aop动态配置Oracle、Mysql数据源

      本文链接:https://blog.csdn.net/wjy511295494/article/details/78825890 Springboot+Mybatis+Pagehelper+Aop ...

  3. springboot添加多数据源连接池并配置Mybatis

    springboot添加多数据源连接池并配置Mybatis 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190226.html May 12, 2018  ...

  4. springboot之多数据源配置JdbcTemplate

    springboot多数据源配置,代码如下 DataSourceConfig package com.rookie.bigdata.config; import org.springframework ...

  5. springboot+ibatis 多数据源配置

    这个是boot基本版本包,因为我用的打包方式是war所以去除掉了boot内置的tomcat,但是为了方便测试又引入了内置tomcat,只要添加<scope>provided</sco ...

  6. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)

    1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...

  7. 基于springboot的多数据源配置

    发布时间:2018-12-11   技术:springboot1.5.1 + maven3.0.1+ mybatis-plus-boot-starter2.3.1 + dynamic-datasour ...

  8. Springboot spring data jpa 多数据源的配置01

    Springboot spring data jpa 多数据源的配置 (说明:这只是引入了多个数据源,他们各自管理各自的事务,并没有实现统一的事务控制) 例: user数据库   global 数据库 ...

  9. springboot集成activiti6.0多数据源的配置

    最近公司开始开发springboot的项目,需要对工作流进行集成.目前activiti已经发布了7.0的版本,但是考虑到6.0版本还是比较新而且稳定的,决定还是选择activiti6.0的版本进行集成 ...

随机推荐

  1. python学习笔记(八)、特殊方法、特性和迭代器

    1 新式类和旧式类 python类的工作方式在不断变化.较新的Python2版本有两种类,其中旧式类正快速退出舞台.新式类时Python2.2 引入的,提供了一些额外功能,如支持函数super 和 p ...

  2. 生产者消费者C++实现

    #include<string>#include<iostream>#include<process.h>#include<windows.h>#inc ...

  3. Fundebug后端Java异常监控插件更新至0.3.1,修复Maven下载失败的问题

    摘要: 0.3.1修复Maven下载失败的问题. 监控Java应用 1. pom.xml 配置fundebug-java依赖 <dependency> <groupId>com ...

  4. SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal

    SAP MM MIGO & Return Delivery 组合实现部分数量的Reversal 在笔者看来,MIGO这个事务代码里的Return Delivery主要用于采购退货场景. 先找到 ...

  5. OpenCL:图像处理基础note

    使用图像对象的理由 虽然对于图像也可以把它的像素数据当做一般的缓存数据来处理,但是如果把它当做图像来处理有如下好处: 在GPU中,图像数据是保存在特殊的全局内存中,即纹理内存,它和一般的全局内存不相同 ...

  6. java之日志管理

    一. 为什么要使用日志 二. 常见日志框架介绍 三. Logback+SLF4J实战 四. 项目源码下载 五. 参考文章   一. 为什么要使用日志 1. 对IT安全至关重要   当您使用强大的日志管 ...

  7. 2019Java查漏补缺(二)

    查看了公众号:java之间的整理的集和文章,文章地址 总结和搜索了一下网络知识,总结了一下: 1.String 的hashcode()方法 2.switch总结: 3.如何实现克隆 1.String ...

  8. (办公)json报错的解决问题的小经验.

    经验:一半,一半的查,看那一段报错,当确定这一步的时候,用最笨的方法,用眼去看,出哪里的错误. 看有没有替换特殊字符的方法,去整理.

  9. Python列表之班荆道故

    列表list初识 列表是python的基础数据类型之一 ,它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: list列表的定义: list_ = []list_1 = [&qu ...

  10. Codechef Bear and Clique Distances

    题目:Bear and Clique Distances 描述:共有N个点,前1—K个点任意两点之间有一条无向边,边的权值为X,再任意给M条边(u,v,w)(不重复),求任意一点到其余各点的最短路. ...