- 浏览: 71253 次
-
文章分类
最新评论
13.从零开始学springboot-jdbc-多数据源
前言
上一节实现了springboot jpa多数据源案例,本节将实现springboot jdbc多数据源案例
创建项目
IDEA创建一个springboot空项目即可,过程略
添加依赖
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
添加配置
application.yml:
spring:
datasource:
master:
username: root
password: 123456
jdbc-url: jdbc:mysql://192.168.145.131:3306/test
# url: jdbc:mysql://192.168.145.131:3306/test
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
username: root
password: 123456
jdbc-url: jdbc:mysql://192.168.145.131:3306/test2
# url: jdbc:mysql://192.168.145.131:3306/test2
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
建库
我们新增test/test2数据库 test新建表
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`age` int(11) NOT NULL,
`grade` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `student` VALUES ('1', '1', '1', '1');
test2新建表:
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`id` int(11) NOT NULL,
`age` varchar(255) DEFAULT NULL,
`course` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `teacher` VALUES ('1', '1', '1', '1');
完善
目录结构
config/DataSource:
package com.mrcoder.sbjdbcmultidb.config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
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 {
//方案一
@Primary
@Bean(name = "masterDataSource")
@Qualifier("masterDataSource")
@ConfigurationProperties(prefix="spring.datasource.master")
public DataSource masterDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "slaveDataSource")
@Qualifier("slaveDataSource")
@ConfigurationProperties(prefix="spring.datasource.slave")
public DataSource slaveDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "masterJdbcTemplate")
@Qualifier("masterJdbcTemplate")
public JdbcTemplate masterJdbcTemplate(@Qualifier("masterDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "slaveJdbcTemplate")
@Qualifier("slaveJdbcTemplate")
public JdbcTemplate slaveJdbcTemplate(@Qualifier("slaveDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
//方案二(请将方案一注释,application.yml修改jdbc-url为url)
// //master库
// @Primary
// @Bean(name = "masterDataSourceProperties")
// @Qualifier("masterDataSourceProperties")
// @ConfigurationProperties(prefix = "spring.datasource.master")
// public DataSourceProperties masterDataSourceProperties() {
// return new DataSourceProperties();
// }
//
// @Primary
// @Bean(name = "masterDataSource")
// @Qualifier("masterDataSource")
// @ConfigurationProperties(prefix = "spring.datasource.master")
// public DataSource masterDataSource(@Qualifier("masterDataSourceProperties") DataSourceProperties dataSourceProperties) {
// return dataSourceProperties.initializeDataSourceBuilder().build();
// }
//
// //slave库
// @Bean(name = "slaveDataSourceProperties")
// @Qualifier("slaveDataSourceProperties")
// @ConfigurationProperties(prefix = "spring.datasource.slave")
// public DataSourceProperties slaveDataSourceProperties() {
// return new DataSourceProperties();
// }
//
// @Bean(name = "slaveDataSource")
// @Qualifier("slaveDataSource")
// @ConfigurationProperties(prefix = "spring.datasource.slave")
// public DataSource slaveDataSource(@Qualifier("slaveDataSourceProperties") DataSourceProperties dataSourceProperties) {
// return dataSourceProperties.initializeDataSourceBuilder().build();
// }
}
entity/Student:
package com.mrcoder.sbjdbcmultidb.entity;
public class Student {
private int id;
private String name;
private int age;
private int grade;
public Student() {
}
public Student(String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", grade=" + grade +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
entity/Teacher:
package com.mrcoder.sbjdbcmultidb.entity;
public class Teacher {
private int id;
private String name;
private String age;
private String course;
public Teacher() {
}
public Teacher(String name, String age, String course) {
this.name = name;
this.age = age;
this.course = course;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", name='" + name + '\'' +
", age='" + age + '\'' +
", course='" + course + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
}
controller/JdbcMultidbController:
package com.mrcoder.sbjdbcmultidb.controller;
import com.mrcoder.sbjdbcmultidb.entity.Student;
import com.mrcoder.sbjdbcmultidb.entity.Teacher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class JdbcMultidbController {
//master
@Autowired
@Qualifier("masterJdbcTemplate")
protected JdbcTemplate masterTempleate;
//slave
@Autowired
@Qualifier("slaveJdbcTemplate")
protected JdbcTemplate slaveTempleate;
@RequestMapping(value = "/list")
public void list(){
String studentSql = "select * from student";
RowMapper<Student> studentRowMapper = new BeanPropertyRowMapper<>(Student.class);
List<Student> studentList = masterTempleate.query(studentSql, studentRowMapper);
String teacherSql = "select * from teacher";
RowMapper<Teacher> teacherRowMapper = new BeanPropertyRowMapper<>(Teacher.class);
List<Teacher> teacherList = slaveTempleate.query(teacherSql, teacherRowMapper);
System.out.println(studentList);
System.out.println(teacherList);
}
}
运行
项目地址
https://github.com/MrCoderStack/SpringBootDemo/tree/master/sb-jdbc-multidb
https://gitee.com/MrCoderStack/SpringBootDemo/tree/master/sb-jdbc-multidb
Tip
关于数据源配置文件中的注释部分请查看我的另一篇博文
请关注我的订阅号
转载于:https://my.oschina.net/u/3066875/blog/3055193
相关推荐
总的来说,这个项目提供了一个从零开始的示例,展示了如何在SpringBoot环境中集成Mybatis和Shiro,以及如何设计RESTful API。对于想要学习这三个技术栈的开发者来说,这是一个很好的起点,通过实际操作,可以深入...
6. **实战示例**:在`demo`项目中,应该包含了从零开始搭建的Spring Boot项目,包含了多数据源配置、AOP切面的定义和使用,以及具体业务方法的实现。通过查看源码,我们可以更直观地理解上述步骤的实现细节。 总结...
在本文中,我们将深入探讨如何从零开始搭建一个SpringBoot项目,并通过实际操作,了解其核心特性和应用场景。 一、SpringBoot简介 SpringBoot是Spring生态体系中的一个重要组成部分,它旨在简化Spring应用的初始...
《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...
总的来说,本资料通过`springboot学习代码演示Blank.rar`提供的`demo`项目,将引导你从零开始学习SpringBoot,涵盖项目创建、配置、数据库集成、业务逻辑实现等多个方面,帮助你快速掌握SpringBoot的核心概念和实践...
总结来说,本节主要介绍了如何在Spring Boot项目中使用JdbcTemplate进行数据库操作,包括设置依赖、配置数据源、注入JdbcTemplate以及执行SQL查询、更新、插入和删除操作。了解并掌握这些基本操作,将有助于我们在...
1. **数据访问**:包括JDBC、JPA、Hibernate等,以及如何配置数据源和事务管理。 2. **Web开发**:学习如何创建RESTful API,使用Thymeleaf、FreeMarker或Velocity模板引擎进行视图渲染,以及处理HTTP请求。 3. **...
在本文中,我们将深入探讨如何从零开始搭建一个基于Spring Boot的后台框架。Spring Boot是Java领域中的一个流行框架,它极大地简化了Spring应用程序的初始设置和配置,使得开发过程更加高效。首先,我们需要了解搭建...
在本文中,我们将深入探讨如何从零开始搭建一个Spring Boot项目,并逐步集成多个常用技术,如JDBC、JPA、MyBatis、Redis、MyBatisPlus和Swagger2。Spring Boot以其简洁的配置和快速的开发体验,已经成为Java开发者...
这个项目包含了源码和SQL数据库,这意味着你可以直接导入并运行,无需从零开始设置环境。 首先,Spring Boot是Spring框架的一个模块,设计目标是简化Spring应用的初始搭建以及开发过程。它预设了许多默认配置,使得...
标题 "springboot+vue+mysq 后台管理" 描述了一个使用现代技术栈构建的后台管理系统,其中涉及的关键技术包括Spring Boot、Vue.js...对于开发者来说,这是一个可以直接使用的模板,减少了从零开始搭建系统的复杂度。
2. 自动配置:基于`@SpringBootApplication`注解,Spring Boot会自动配置大部分常见Spring组件,如数据源、JPA、WebSocket等。 3. Starter POMs:这些Maven或Gradle依赖管理工具提供了一种便捷的方式来引入和配置...
项目中附带的创建教程地址,应该是一个详细的步骤指南,教你如何从零开始搭建并运行这个项目,包括安装IDEA、导入项目、配置数据库连接、运行项目等步骤,对于初学者来说是非常有价值的资源。 总的来说,这个项目...
在"mybits2.zip"这个压缩包中,我们可能找到了与"从零开始学SpringBoot-自定义配置"教程相关的示例代码。SpringBoot的强大之处在于其自动配置(Auto Configuration)能力,通过读取`application.properties`或`...
这些集成使得开发者无需从零开始搭建复杂依赖,只需关注业务逻辑即可。 在尚硅谷的视频教程中,可能涵盖了SpringBoot的起步驱动配置、Web开发、RESTful API设计、模板引擎(如Thymeleaf或Freemarker)的使用、数据...
在这个“spring boot入门--创建项目到数据库连接”的教程中,我们将深入探讨如何从零开始创建一个 Spring Boot 项目,并实现与数据库的连接。 首先,我们需要理解 Spring Boot 的核心特性。它内置了一个内嵌的...
- 如有JDBC驱动在类路径中,自动配置将设置数据源和JdbcTemplate;如果发现Hibernate,将自动配置ORM支持。 5. **内置服务器** - SpringBoot默认内嵌了Tomcat或Jetty服务器,无需额外下载和配置,可以直接运行`...
《Spring中文版基础教程》是一本面向初学者的详尽指南,旨在帮助读者从零开始掌握Spring框架的基础知识。Spring是Java开发中最流行的轻量级框架之一,它提供了丰富的功能来简化企业级应用的开发。本教程将带你一步步...
boot-study-master.zip"这一压缩包,深入探讨Spring Boot的核心概念及实战应用,包括Druid、Ehcache、JWT、Mybatis、Generator、Quartz、Scheduling、Shiro以及Upload等模块,旨在帮助初学者从零开始全面掌握Spring ...
启动教程视频则为用户提供了如何从零开始搭建和运行该教室信息管理系统的指导,视频通常会在B站等平台上提供,方便学生和开发人员通过观看教程视频来快速掌握整个系统的搭建和使用。 在实际的应用中,教室信息管理...