springboot整合JDBC

14 篇文章 0 订阅

创建测试项目测试数据源

1、先去新建一个项目测试: 引入相应的模块 jdbc
在这里插入图片描述

2、项目建好之后,发现springboot自动帮我们导入了jdbc的启动器:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

spring-boot-starter-parent进入spring-boot-dependencies

在这里插入图片描述
可以看到springboot给我们默认安装的mysql8.0.23的依赖
如果使用的是mysql 5.0的就需要安装mysql5.0的依赖

方法:

<mysql.version>5.x.xx</mysql.version>
在这里插入图片描述
在这里插入图片描述
3、编写yaml配置文件连接数据库

spring:
datasource:
username: root
password: 123456
#    mysql 8版本的
url: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
driver-class-name: com.mysql.cj.jdbc.Driver

4、配置完这一些东西后,我们就可以直接去使用了,因为SpringBoot已经默认帮我们进行了自动配置;去测试类测试一下

@SpringBootTest
class SpringbootDataJdbcApplicationTests {
	//DI注入数据源
	@Autowired
	DataSource dataSource;
	@Test
	public void contextLoads() throws SQLException {
		//看一下默认数据源
		System.out.println(dataSource.getClass());
		//获得连接
		Connection connection = dataSource.getConnection();
		System.out.println(connection);
		//关闭连接
		connection.close();
	}
}

结果:我们可以看到他默认给我们配置的数据源为 : class com.zaxxer.hikari.HikariDataSource , 我们并没有手动配置
我们来全局搜索一下,找到数据源的所有自动配置都在 :DataSourceAutoConfiguration文件:
在这里插入图片描述

	@Configuration(proxyBeanMethods = false)
	@Conditional(PooledDataSourceCondition.class)
	@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
	@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
			DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
			DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
	protected static class PooledDataSourceConfiguration {

	}

这里导入的类都在 DataSourceConfiguration 配置类下,点击进入DataSourceConfiguration

@ConditionalOnMissingBean(DataSource.class) :如果容器内没有DataSource就执行

所以如果你没有自定义数据源 默认使用HikariDataSource 数据源

HikariDataSource 号称 Java WEB 当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat,jdbc 等连接池更加优秀;
在这里插入图片描述
接下来先了解 jdbcTemplate

JdbcTemplate

即使不使用用第三方第数据库操作框架,如 MyBatis等Spring 本身对原生的JDBC 做了轻量级的封装,即JdbcTemplate

数据库操作的所有 CRUD 方法都在 JdbcTemplate 中 JdbcTemplate 的自动配置是依赖org.springframework.boot.autoconfigure.jdbc 包下的JdbcTemplateConfiguration 类

@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(JdbcOperations.class)
class JdbcTemplateConfiguration {

	@Bean
	@Primary
	JdbcTemplate jdbcTemplate(DataSource dataSource, JdbcProperties properties) {
		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
		JdbcProperties.Template template = properties.getTemplate();
		jdbcTemplate.setFetchSize(template.getFetchSize());
		jdbcTemplate.setMaxRows(template.getMaxRows());
		if (template.getQueryTimeout() != null) {
			jdbcTemplate.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
		}
		return jdbcTemplate;
	}

}

Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序
员只需自己注入即可使用

JdbcTemplate主要提供以下几类方法:

  • execute方法:可以用于执行任何SQL语句
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句
  • query方法及queryForXXX方法:用于执行查询相关语句
  • call方法:用于执行存储过程、函数相关语句

测试

编写一个Controller,注入 jdbcTemplate,编写测试方法进行访问测试

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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
import java.util.Map;
@SpringBootTest
class SpringbootWebApplicationTests {
	/**
	* Spring Boot 默认提供了数据源,默认提供了
	org.springframework.jdbc.core.JdbcTemplate
	* JdbcTemplate 中会自己注入数据源,用于简化 JDBC操作
	* 还能避免一些常见的错误,使用起来也不用再自己来关闭数据库连接
	*/
	@Autowired
	JdbcTemplate jdbcTemplate;
	//查询user表中所有数据
	//List 中的1个 Map 对应数据库的 1行数据
	//Map 中的 key 对应数据库的字段名,value 对应数据库的字段值
	@Test
	public List<Map<String, Object>> userList(){
	String sql = "select * from user";
	List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
	for (Map<String, Object> map : maps) {
            System.out.println(map);
        }
	}
//其他的就由大家自己测试了
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值