SpringBoot数据访问复习

news/2024/10/18 19:23:24/

SpringBoot数据访问复习

数据访问准备

引入jdbc所需要的依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>        

原理分析

导入的启动器引入了两个对应的依赖
在这里插入图片描述

通过对导入依赖的分析明确默认的数据源

在这里插入图片描述

在这里插入图片描述
通过maven的使用发现缺少数据库的驱动—官方不知道操作什么数据库

导入数据库驱动

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>

分析自动配置原理

进入springboot自动配置相关的包进行分析,进入自动配置模块点击数据源的自动配置类,和数据源的事务配置类进行分析。

  • DataSourceAutoConfiguration : 数据源的自动配置
    • 修改数据源相关的配置:spring.datasource
    • 数据库连接池的配置,是自己容器中没有DataSource才自动配置的
    • 底层配置好的连接池是:HikariDataSource
@Configuration(proxyBeanMethods = false)@Conditional(PooledDataSourceCondition.class)@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class,DataSourceJmxConfiguration.class })protected static class PooledDataSourceConfiguration {}

在这里插入图片描述

在配置文件中使用该前缀来进行属性的修改

  • DataSourceTransactionManagerAutoConfiguration: 事务管理器的自动配置

操作数据库的小工具

  • JdbcTemplateAutoConfiguration: JdbcTemplate的自动配置,可以来对数据库进行crud
  • 可以修改这个配置项@ConfigurationProperties(prefix = “spring.jdbc”) 来修改JdbcTemplate
  • @Bean@Primary JdbcTemplate;容器中有这个组件
  • JndiDataSourceAutoConfiguration: jndi的自动配置
  • XADataSourceAutoConfiguration: 分布式事务相关的

JdbcTemplate测试数据库

@Slf4j
@SpringBootTest
class Boot05WebAdminApplicationTests {@AutowiredJdbcTemplate jdbcTemplate;@Testvoid contextLoads() {//        jdbcTemplate.queryForObject("select * from account_tbl")
//        jdbcTemplate.queryForList("select * from account_tbl",)Long aLong = jdbcTemplate.queryForObject("select count(*) from account_tbl", Long.class);log.info("记录总数:{}",aLong);}}

使用阿里的数据源

导入对应的依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency>

方式一:使用自定义配置类的方式进行操作(常用的还是配置文件)

package com.dzu.boot.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** @Author ChenRuXu* @Date 2024/2/3 10:52* @Version 1.0*/
@Configuration
public class MyDataSourceConfig {@Beanpublic DataSource dataSource(){DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setUrl("");druidDataSource.setUsername("root");druidDataSource.setPassword("123456");return druidDataSource;}
}

方式二:使用配置文件的方式

spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.atguigu.admin.*  #监控SpringBeanfilters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)stat-view-servlet:   # 配置监控页功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter:  # 监控webenabled: trueurlPattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat:    # 对上面filters里面的stat的详细配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false

http://www.ppmy.cn/news/1342444.html

相关文章

新 CentOS 7 服务器的基本配置

简介 在为新服务器设置最低配置之后&#xff0c;大多数情况下都建议进行一些额外的步骤。在本指南中&#xff0c;我们将继续配置我们的服务器&#xff0c;处理一些推荐但可选的程序。 先决条件和目标 在开始本指南之前&#xff0c;您应该先运行 CentOS 7 初始服务器设置指南…

centos7安装oracle

1 安装虚拟机 设置4G内存&#xff0c;硬盘40G 2 配置网络环境 2.1配置主机名 # vi /etc/hostname 修改为 oracle2.2 配置IP地址 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改 BOOTPROTO"static" ONBOOT"yes" IPADDR192.168.109.110 NETMAS…

基于Java医院管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

【XR806开发板试用】TCP通信测试 Ping 命令测试

1.工程准备 由于要使用wifi功能&#xff0c;直接从wlan_demo复制一份出来&#xff0c;然后修改。 源文件只留下 main.c 就可以了。 BUILD.gn文件 import("//device/xradio/xr806/liteos_m/config.gni")static_library("app_mying") {configs []sources…

小程序定制开发前,应该考虑些什么?

引言 在移动互联网时代&#xff0c;小程序已经成为许多企业和个人推广业务、提供服务的理想平台。然而&#xff0c;在进行小程序定制开发之前&#xff0c;开发者和业务方需要细致入微地考虑一系列关键因素&#xff0c;以确保最终的小程序既能满足用户需求&#xff0c;又能够顺…

scoped样式隔离原理

在 Vue 中&#xff0c;作用域样式&#xff08;Scoped Styles&#xff09;是通过以下原理实现的&#xff1a; 1、唯一选择器&#xff1a; 当 Vue 编译单文件组件时&#xff0c;在样式中使用 scoped 特性或 module 特性时&#xff0c;Vue 会为每个样式选择器生成一个唯一的属性…

请解释Java中的equals()和hashCode()方法的作用和区别。请解释Java中的AOP(面向切面编程)的作用和原理。

请解释Java中的equals()和hashCode()方法的作用和区别。 在Java中&#xff0c;equals()和hashCode()方法都是用于处理对象相等性&#xff08;equality&#xff09;的方法。 equals()方法&#xff1a; equals()方法是Object类中定义的方法&#xff0c;所有的Java类都可以使用该…

shell脚本编程【一】

shell脚本编程【一】 一、Shell概述二、Shell脚本入门2.1.Shell介绍2.1.1.Shell脚本2.1.2.为什么学习Shell脚本? 2.2.Shell的运行过程2.3.Shell解析器2.3.1.查看linux系统centos支持的shell解析器2.3.2.介绍解析器类型2.3.3.Centos默认的解析器是bash 2.4.小结2.4.1.Shell是什…