本示例通过JdbcTemplate访问SQLite和MySQL数据库,对于多数据源的支持这个是很重要的一个功能。
目录
Maven依赖配置
项目资源配置
数据源配置
接口实现示例
4.0.0
com.boonya
sb-sqlite
0.0.1-SNAPSHOT
jar
sb-sqlite
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
UTF-8
UTF-8
1.8
1.3.2
3.4
1.1.9
1.2.5
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis-version}
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-aop
org.apache.commons
commons-lang3
${commons-lang3}
com.fasterxml.jackson.core
jackson-core
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.datatype
jackson-datatype-joda
com.fasterxml.jackson.module
jackson-module-parameter-names
org.xerial
sqlite-jdbc
3.21.0.1
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
com.github.pagehelper
pagehelper-spring-boot-starter
${pagehelper-version}
com.alibaba
druid-spring-boot-starter
${druid-version}
junit
junit
4.12
compile
org.springframework
spring-aop
5.0.8.RELEASE
org.springframework
spring-aop
5.0.8.RELEASE
org.springframework.boot
spring-boot-maven-plugin
application.yml
server:
port: 8888
spring:
profiles:
active:
datasource:
name: mixtured-dbs
sqlite:
driver-class-name: org.sqlite.JDBC
username: sa
password: sa
jdbcurl: jdbc:sqlite:C:/Users/admin/Desktop/springboot/sb-sqlite/src/main/db/15843911112_zmn15843911112.db
mysql:
jdbcurl: jdbc:mysql://192.168.1.111:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
DataSourceConfig.java
package com.boonya.sbsqlite.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
private static Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);
@Bean(name = "SQLiteDataSource")
@Qualifier("SQLiteDataSource")
@ConfigurationProperties(prefix="spring.datasource.sqlite")
public DataSource SQLiteDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "MySQLDataSource")
@Qualifier("MySQLDataSource")
@ConfigurationProperties(prefix="spring.datasource.mysql")
@Primary
public DataSource MySQLDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sqliteJdbcTemplate")
public JdbcTemplate sqliteJdbcTemplate(@Qualifier("SQLiteDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "mysqlJdbcTemplate")
public JdbcTemplate mysqlJdbcTemplate(@Qualifier("MySQLDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
以下包含两个接口定义:
package com.boonya.sbsqlite.service;
import java.util.List;
import java.util.Map;
public interface XhHlyService {
public Map select(long id);
/**
* 查询业务类型主表记录
* @param number
* @return
*/
public Map select(String number) ;
/**
* 查询业务类型子表记录
* @param number
* @param dwCode
* @return
*/
public Map select(String number,String dwCode);
/**
* 查询所有重复业务类型数据(需要处理的数据原始表)
* @return
*/
public List< Map> selectAll() ;
/**
* 查询所有重复业务类型数据(需要处理的数据中间表)
* @return
*/
public List
XhHlyService实现:
package com.boonya.sbsqlite.service.impl;
import com.boonya.sbsqlite.config.DataSourceConfig;
import com.boonya.sbsqlite.service.XhHlyService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@Service
public class XhHlyServiceImpl implements XhHlyService {
private static Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);
@Autowired
@Qualifier("mysqlJdbcTemplate")
private JdbcTemplate jdbcTemplate;
public Map select(long id) {
String sql="SELECT * FROM XH_HLY_TB_ZB WHERE OBJECTID="+id;
return jdbcTemplate.queryForList(sql).get(0);
}
public Map select(String number) {
String sql="SELECT * FROM XH_HLY_TB_ZB WHERE USER_TEL='"+number+"'";
return jdbcTemplate.queryForList(sql).get(0);
}
public Map select(String number,String dwCode) {
String sql="SELECT * FROM XH_HLY_TB_"+dwCode+" WHERE USER_TEL='"+number+"'";
return jdbcTemplate.queryForList(sql).get(0);
}
public List
XhNoticeService实现:
package com.boonya.sbsqlite.service.impl;
import com.boonya.sbsqlite.service.XhNoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class XhNoticeServiceImpl implements XhNoticeService {
@Autowired
@Qualifier("sqliteJdbcTemplate")
private JdbcTemplate jdbcTemplate;
public Map select(long id) {
String sql="SELECT * FROM TABLE_NOTICE WHERE id="+id;
return jdbcTemplate.queryForList(sql).get(0);
}
public List> selectAll() {
String sql="SELECT * FROM TABLE_NOTICE";
return jdbcTemplate.queryForList(sql);
}
}