springboot-数据库操作学习-JDBC(一)

SpringBoot支持MyBatis、Hibernate和SpringJDBC等ORM框架,并有对应的Starter包简化集成。JDBC是Java数据库连接API,SpringBoot通过starter-jdbc依赖HikariCP进行数据库操作。配置单或多数据源时,SpringBoot自动初始化JDBC。示例展示了如何配置和使用主次数据源。
摘要由CSDN通过智能技术生成

简介

Spring Boot ⽀支持了了主流的 ORM 框架:MyBatis、Hibernate 和 Spring JDBC,⼏几种 ORM 在不不同的场
景下各有优势,在 Spring Boot 体系内都有对应的 Starter 包以⽅方便便集成。

Spring Boot 使⽤用 JDBC 操作数据库

JDBC(Java Data Base Connectivity,Java 数据库连接)是⼀一种⽤用于执⾏行行 SQL 语句句的 Java API,可以为多
种关系数据库提供统⼀一访问,它由⼀一组⽤用 Java 语⾔言编写的类和接⼝口组成。JDBC 提供了了⼀一种基准,据此可以
构建更更⾼高级的⼯工具和接⼝口,使数据库开发⼈人员能够编写数据库应⽤用程序
Java 程序中使⽤用 JDBC, 需要如下7步操作:

  • 加载数据库驱动
  • 建⽴立数据库连接
  • 创建数据库操作对象
  • 定义操作的 SQL 语句句
  • 执⾏行行数据库操作
  • 获取并操作结果集
  • 关闭对象,回收资源
    代码如下:
try {
// 1、加载数据库驱动
Class.forName(driver);
// 2、获取数据库连接
conn = DriverManager.getConnection(url, username, password);
// 3、获取数据库操作对象
stmt = conn.createStatement();
// 4、定义操作的 SQL 语句句
String sql = "select * from user where id = 6";
// 5、执⾏行行数据库操作
rs = stmt.executeQuery(sql);
// 6、获取并操作结果集
while (rs.next()) {
// 解析结果集
}
} catch (Exception e) {
// ⽇日志信息
} finally {
// 7、关闭资源
}

Spring Boot 针对 JDBC 的使⽤用提供了了对应的 Starter 包:spring-boot-starter-jdbc。
spring-boot-starter-jdbc 直接依赖于 HikariCP 和 spring-jdbc。
HikariCP 是 Spring Boot 2.0 默认使⽤用的数据库连接池,也是传说中最快的数据库连接池。
spring-jdbc 是 Spring 封装对 JDBC 操作的工具包.
单数据源配置:

spring.datasource.url=jdbc:mysql://localhost:3306/learn
de=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

多数据源配置:

spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/learn?serverTimezon
e=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.primary.username=root
spring.datasource.primary.password=123456
spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/learn1?serverTimez
one=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.secondary.username=root
spring.datasource.secondary.password=123456
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver

这里使用的是 spring.datasource.*.jdbc-url,因为默认连接池 HikariCP 读取的是 jdbc-url。
在项⽬目启动的时候读取配置⽂文件中的信息,并对 JDBC 初始化。

// 在启动的时候根据特定的前缀加载不同的数据源,根据构建好的数据源再创建不同的JDBC。
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name="primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate (
@Qualifier("primaryDataSource") DataSource dataSource ) {
return new JdbcTemplate(dataSource);
}
@Bean(name="secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
以下是使用Spring Boot结合MyBatis和Alibaba Druid连接池对ClickHouse进行数据操作的步骤: 1.在pom.xml文件中添加ClickHouse JDBC驱动和Alibaba Druid连接池的依赖: ```xml <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> ``` 2.在application.properties文件中配置ClickHouse和Druid的连接信息: ```properties # ClickHouse 数据库连接配置 spring.datasource.url=jdbc:clickhouse://localhost:8123/default spring.datasource.driver-class-name=ru.yandex.clickhouse.ClickHouseDriver spring.datasource.username=username spring.datasource.password=password # Druid 连接池配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.initial-size=1 spring.datasource.min-idle=1 spring.datasource.max-active=20 spring.datasource.max-wait=60000 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 spring.datasource.pool-prepared-statements=true spring.datasource.max-pool-prepared-statement-per-connection-size=20 spring.datasource.filters=stat,wall,log4j spring.datasource.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 ``` 3.在Spring Boot的启动类上添加注解@EnableTransactionManagement和@MapperScan: ```java @SpringBootApplication @EnableTransactionManagement @MapperScan("com.example.demo.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 4.创建Mapper接口和对应的XML文件,使用MyBatis进行数据操作: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user") List<User> selectAll(); } ``` ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.demo.entity.User"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="age" property="age" jdbcType="INTEGER"/> </resultMap> <select id="selectAll" resultMap="BaseResultMap"> SELECT * FROM user </select> </mapper> ``` 5.在Controller中注入Mapper并进行数据操作: ```java @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public List<User> getUsers() { return userMapper.selectAll(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值