本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

springboot整合JDBC

发布于2021-05-29 20:54     阅读(550)     评论(0)     点赞(27)     收藏(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);
        }
	}
//其他的就由大家自己测试了
}

原文链接:https://blog.csdn.net/qq_43649799/article/details/117308128



所属网站分类: 技术文章 > 博客

作者:我是一个射手

链接:http://www.javaheidong.com/blog/article/207358/a5776140442a53f4d6c3/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)