start-spring-boot.rar springboot整合mybatis+druid多数据源,详细记载了多数据的详细信息和源码,帮助初学者快速搭建并且运行此项目 整合MyBatis之前,先搭建一个基本的Spring Boot项目开启Spring Boot DemoController 控制层的代码 service层 dao 层我这里为了方便没有写.xml映射文件 需要在启动类加上MapperScan 后面跟上要扫描的dao sql语句 到这里单个数据源就可以使用了,下面进入多个数据源模式 一般用于读写分离,或者分库来使用,有的教程会加上 @Primary表示主数据源,既然分开来说明有这个需求没有主次之分,这里我也使用这样的方式吧 有什么问题不懂得评论我会解答!
spring boot整合mybatis+druid和多数据源
单个数据源
pom文件:
<!--引入druid数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 数据库 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency>
application.properties文件配置内容
单数据源 #datasource1 spring.datasource.druid.type=com.alibaba.druid.pool.DataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql:///myredis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 #连接池配置 spring.datasource.initial-size=5 spring.datasource.min-idle=5 spring.datasource.max-active=20 #连接等待超时时间 spring.datasource.max-wait=30000 #配置检测可以关闭的空闲连接间隔时间 spring.datasource.time-between-eviction-runs-millis=60000 #配置连接在池中的最小生存时间 spring.datasource.min-evictable-idle-time-millis=300000 spring.datasource.validation-query=select '1' from dual spring.datasource.test-while-idle=true spring.datasource.test-on-borrow=false spring.datasource.test-on-return=false #打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.pool-prepared-statements=true spring.datasource.max-open-prepared-statements=20 spring.datasource.max-pool-prepared-statement-per-connection-size=20
单数据代码奉献上
@RestController public class DemoController { @Autowired public DemoService demoService; @RequestMapping("/demo") String getStringAll() { return demoService.getQueryAll().toString(); } }
public interface DemoService { /** * 查询数据源1所有信息 * * @return */ List<Teacher> getQueryAll(); } @Service public class DemoServiceImpl implements DemoService { @Autowired DemoQuery demoQuery; @Override public List<Teacher> getQueryAll() { return demoQuery.getQueryAll(); }
@Component @Mapper public interface DemoQuery { /** * 查询所有老师信息 * @return List<Teacher> */ @Select("select * from teacher") @Results(id = "teacher",value= { @Result(property = "sno", column = "sno", javaType = String.class), @Result(property = "name", column = "sname", javaType = String.class), @Result(property = "sex", column = "ssex", javaType = String.class) }) List<Teacher> getQueryAll(); }
@SpringBootApplication @MapperScan("study.startspringboot.mapper") public class StartSpringBootApplication { public static void main(String[] args) { SpringApplication.run(StartSpringBootApplication.class, args); } }
CREATE TABLE teacher ( SNO VARCHAR(5), SNAME VARCHAR(9), SSEX CHAR(3) ); INSERT INTO teacher VALUES ('001', 'KangKang', 'M '); INSERT INTO teacher VALUES ('002', 'Mike', 'M '); INSERT INTO teacher VALUES ('003', 'Jane', 'F ');
多个数据源
pom文件和上面的单个数据源的!你们复制即可!然后从application.properties默认配置改成了注解方式来进行
@bean druidServlet这个是开启druid的sql时间监控的运行项目打开这个链接即可:https://localhost:8080/druid/login.html目录结构
application.properties
#数据库访问配置,使用数据源 #datasource1 ds1.datasource.url=jdbc:mysql:///myredis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 ds1.datasource.username=root ds1.datasource.password=123456 ds1.datasource.driverClassName=com.mysql.cj.jdbc.Driver #datasource2 ds2.datasource.url=jdbc:mysql:///myredis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 ds2.datasource.username=root ds2.datasource.password=123456 ds2.datasource.driverClassName=com.mysql.cj.jdbc.Driver ## datasource.initialSize=20 datasource.minIdle=20 datasource.maxActive=200 datasource.maxWait=-1 datasource.timeBetweenEvictionRunsMillis=60000 datasource.minEvictableIdleTimeMillis=300000 datasource.testWhileIdle=true datasource.testOnBorrow=false datasource.testOnReturn=false datasource.poolPreparedStatements=true datasource.maxPoolPreparedStatementPerConnectionSize=20 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 datasource.filters=stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 datasource.useGlobalDataSourceStat=true
数据源1的配置
@Configuration @MapperScan(basePackages = Datasource1Config.PACKAGE, sqlSessionFactoryRef = "ds1SqlSessionFactory") public class Datasource1Config { /** * 数据的Dao层,你要扫描的类包的全称 */ static final String PACKAGE = "study.startspringboot.mapper.datasource2"; /** * 映射的资源文件 */ static final String MAPPER_LOCATION = "classpath*:mapper/datasource1dao/*.xml"; @Value("${ds1.datasource.url}") private String url; @Value("${ds1.datasource.username}") private String user; @Value("${ds1.datasource.password}") private String password; @Value("${ds1.datasource.driverClassName}") private String driverClass; @Value("${datasource.maxActive}") private Integer maxActive; @Value("${datasource.minIdle}") private Integer minIdle; @Value("${datasource.initialSize}") private Integer initialSize; @Value("${datasource.maxWait}") private Long maxWait; @Value("${datasource.timeBetweenEvictionRunsMillis}") private Long timeBetweenEvictionRunsMillis; @Value("${datasource.minEvictableIdleTimeMillis}") private Long minEvictableIdleTimeMillis; @Value("${datasource.testWhileIdle}") private Boolean testWhileIdle; @Value("${datasource.testWhileIdle}") private Boolean testOnBorrow; @Value("${datasource.testOnBorrow}") private Boolean testOnReturn; @Value("${datasource.poolPreparedStatements}") private boolean poolPreparedStatements; @Value("${datasource.maxPoolPreparedStatementPerConnectionSize}") private int maxPoolPreparedStatementPerConnectionSize; @Value("${datasource.filters}") private String filters; @Value("${datasource.connectionProperties}") private String connectionProperties; @Value("${datasource.useGlobalDataSourceStat}") private boolean useGlobalDataSourceStat; @Bean(name = "ds1DataSource") @Primary public DataSource ds1DataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(url); datasource.setUsername(user); datasource.setPassword(password); datasource.setDriverClassName(driverClass); datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery("SELECT 'x'"); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); try { datasource.setFilters(filters); } catch (SQLException e) { System.err.println("druid configuration initialization filter: " + e); } datasource.setConnectionProperties(connectionProperties); datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat); return datasource; } @Bean(name = "ds1TransactionManager") @Primary public DataSourceTransactionManager ds1TransactionManager() { return new DataSourceTransactionManager(ds1DataSource()); } @Bean(name = "ds1SqlSessionFactory") @Primary public SqlSessionFactory ds1SqlSessionFactory(@Qualifier("ds1DataSource") DataSource ds1DataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(ds1DataSource); sessionFactory.setTypeAliasesPackage("com.uchat.entity"); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(Datasource1Config.MAPPER_LOCATION)); return sessionFactory.getObject(); } @Bean public ServletRegistrationBean druidServlet() { //访问路径为/druid时,跳转到StatViewServlet ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); //启动druid 监控路径(不设置没有办法启动) servletRegistrationBean.addUrlMappings("/druid/*"); // IP白名单 servletRegistrationBean.addInitParameter("allow", "127.0.0.1,127.0.0.1"); // IP黑名单(共同存在时,deny优先于allow) servletRegistrationBean.addInitParameter("deny", "192.16.1.100"); //控制台管理用户 servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "1111"); //是否能够重置数据 禁用HTML页面上的“Reset All”功能 servletRegistrationBean.addInitParameter("resetEnable", "false"); return servletRegistrationBean; } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
数据源2的配置
@Configuration @MapperScan(basePackages = Datasource2Config.PACKAGE, sqlSessionFactoryRef = "ds2SqlSessionFactory") public class Datasource2Config { /** * 数据的Dao层,打出他的包路径 */ static final String PACKAGE = "study.startspringboot.mapper.datasource2"; /** * 映射的资源文件 */ static final String MAPPER_LOCATION = "classpath*:mapper/datasource2dao/*.xml"; @Value("${ds1.datasource.url}") private String url; @Value("${ds1.datasource.username}") private String user; @Value("${ds1.datasource.password}") private String password; @Value("${ds1.datasource.driverClassName}") private String driverClass; @Value("${datasource.maxActive}") private Integer maxActive; @Value("${datasource.minIdle}") private Integer minIdle; @Value("${datasource.initialSize}") private Integer initialSize; @Value("${datasource.maxWait}") private Long maxWait; @Value("${datasource.timeBetweenEvictionRunsMillis}") private Long timeBetweenEvictionRunsMillis; @Value("${datasource.minEvictableIdleTimeMillis}") private Long minEvictableIdleTimeMillis; @Value("${datasource.testWhileIdle}") private Boolean testWhileIdle; @Value("${datasource.testWhileIdle}") private Boolean testOnBorrow; @Value("${datasource.testOnBorrow}") private Boolean testOnReturn; @Value("${datasource.poolPreparedStatements}") private boolean poolPreparedStatements; @Value("${datasource.maxPoolPreparedStatementPerConnectionSize}") private int maxPoolPreparedStatementPerConnectionSize; @Value("${datasource.filters}") private String filters; @Value("${datasource.connectionProperties}") private String connectionProperties; @Value("${datasource.useGlobalDataSourceStat}") private boolean useGlobalDataSourceStat; @Bean(name = "ds2DataSource") public DataSource ds2DataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(url); datasource.setUsername(user); datasource.setPassword(password); datasource.setDriverClassName(driverClass); datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery("SELECT 'x'"); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); try { datasource.setFilters(filters); } catch (SQLException e) { System.err.println("druid configuration initialization filter: " + e); } datasource.setConnectionProperties(connectionProperties); datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat); return datasource; } @Bean(name = "ds2TransactionManager") public DataSourceTransactionManager ds2TransactionManager() { return new DataSourceTransactionManager(ds2DataSource()); } @Bean(name = "ds2SqlSessionFactory") public SqlSessionFactory ds2SqlSessionFactory(@Qualifier("ds2DataSource") DataSource ds2DataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(ds2DataSource); sessionFactory.setTypeAliasesPackage("com.uchat.entity"); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(Datasource2Config.MAPPER_LOCATION)); return sessionFactory.getObject(); } }
我把代码放在了git上:https://github.com/aloneoneself/springStudy
记得给星星呀,不会Git的我会把源文件上传到附件的!!!!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算