没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Spring Boot 多数据源动态配置
Spring Framework 为 SQL 数据库提供了广泛的支持。从直接使用 JdbcTemplate 进行 JDBC 访问到完
全的对象关系映射(object relational mapping)技术,比如 Hibernate。Spring Data 提供了更多级
别的功能,直接从接口创建的 Repository 实现,并使用了约定从方法名生成查询。
一、默认数据源HikariDataSource
1、创建项目,导入依赖
2、建库脚本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
-- 创建ds1数据库
CREATE DATABASE `ds1` CHARACTER SET utf8 COLLATE utf8_general_ci;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT
NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE =
utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'zhangsan');
--------------------------------------------------------------------------------
---------
-- 创建ds2数据库
CREATE DATABASE `ds2` CHARACTER SET utf8 COLLATE utf8_general_ci;
-- ----------------------------
-- Table structure for user
3、配置数据源
4、测试类代码
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT
NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE =
utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (2, 'lisi');
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://127.0.0.1:40004/ds1?
serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
package com.yuandengta;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* 测试默认数据源
*/
@SpringBootTest
class DefaultDataSourceTest {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
System.out.println(dataSource.getClass());
Connection connection = dataSource.getConnection();
System.out.println("默认数据源:" + connection);
connection.close();
}
5、执行crud操作
1、有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接
(java.sql.Connection),有了连接,就可以使用连接和原生的 JDBC 语句来操作数据库
2、即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封
装,即 org.springframework.jdbc.core.JdbcTemplate。
3、数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。
4、Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序
员只需自己注入即可使用
5、JdbcTemplate 的自动配置原理是依赖 org.springframework.boot.autoconfigure.jdbc 包下的
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration 类
}
package com.yuandengta.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Random;
@RestController
public class UserController {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/userlist")
public List<Map<String, Object>> userList() {
String sql = "select * from user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
@GetMapping("/addUser")
public String addUser() {
Random random = new Random();
int no = random.nextInt(99999);
String sql = "insert into user(name) values('test" + no + "')";
jdbcTemplate.update(sql);
return "success";
}
@GetMapping("/updateUser/{id}")
public String updateUser(@PathVariable("id") Integer id) {
String sql = "update user set name=? where id = " + id;
String name = "list";
jdbcTemplate.update(sql, name);
return "update success";
}
剩余14页未读,继续阅读
坐在地心看宇宙
- 粉丝: 23
- 资源: 331
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0