当前位置: 首页 > news >正文

SpringBoot 整合JDBC

SpringData简介

  • Sping Data 官网:https://spring.io/projects/spring-data
  • 数据库相关的启动器 :可以参考官方文档:https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter

整合JDBC

创建测试项目测试数据源

  1. 新建一个项目测试:springboot-data-jdbc ; 引入相应的模块!基础模块

  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>
    
  3. 编写yaml配置文件连接数据库;

    spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Driver
    
  4. 配置完这一些东西后,我们就可以直接去使用了,因为SpringBoot已经默认帮我们进行了自动配置;去测试类测试一下

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

结果:我们可以看到他默认给我们配置的数据源为 : class com.zaxxer.hikari.HikariDataSource , 我们并没有手动配置

JDBCTemplate

  1. 有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接(java.sql.Connection),有了连接,就可以使用原生的 JDBC 语句来操作数据库;

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

  3. 数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。

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

  5. JdbcTemplate 的自动配置是依赖org.springframework.boot.autoconfigure.jdbc包下的 JdbcTemplateConfiguration

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

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

测试

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

package nuc.ss.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;@RestController
public class JDBCController {@AutowiredJdbcTemplate jdbcTemplate;// 查询数据库的所有信息// 没有实体类,获取数据库的东西,怎么获取? Map@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() {String sql = "insert into mybatis.user(id, name, pwd) values(7,'小明','123456')";jdbcTemplate.update(sql);return "update-ok";}@GetMapping("/updateUser/{id}")public String updateUser(@PathVariable("id") int id) {String sql = "update mybatis.user set name  = ?,pwd = ? where id = " + id;//封装Object[] objects = new Object[2];objects[0] = "小明2";objects[1] = "aaaaaaa";jdbcTemplate.update(sql,objects);return "update-ok";}@GetMapping("/deleteUser/{id}")public String deleteUser(@PathVariable("id") int id) {String sql = "delete from mybatis.user where id = ?";jdbcTemplate.update(sql,id);return "update-ok";}
}

测试请求,结果正常;
到此,CURD的基本操作,使用 JDBC 就搞定了。

相关文章:

SpringBoot 整合JDBC

SpringData简介 Sping Data 官网&#xff1a;https://spring.io/projects/spring-data数据库相关的启动器 &#xff1a;可以参考官方文档&#xff1a;https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter 整合JDBC 创建测试项目测试数据…...

TypeScript使用npm安装报错问题

问题如图&#xff1a; 问题原因&#xff1a; 权限不足导致&#xff0c;可以输入如下命令&#xff1a; sudo npm install i -g typescript该命令会要求输入登录密码相关&#xff0c;稍等片刻&#xff0c;即可安装成功。检测安装的命令&#xff1a; tsc -v...

2023国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...

学习pytorch 3 tensorboard的使用

tensorboard的使用 1. 安装2. add_scalar 查看函数图形3. 查看结果4. add_image() 查看训练步骤中间结果的图片 1. 安装 pytorch conda环境 pip install tensorboard pip install opencv-python2. add_scalar 查看函数图形 常用来查看 train val loss等函数图形 from torch…...

Linux 命令篇

一、启动网络命令 ip addr 查看网卡信息 service network start 启动网卡 service network stop 关闭网卡 service network restart 重启网络 二、pwd 命令 查看当前目录的路径 linux 下所有的绝对路径都是从根目录 "/" 开始 root:是linux下root用户的根目…...

OpenCV-SIFT算法详解

系列文章目录 文章目录 系列文章目录引言一、高斯金字塔二、高斯差分金字塔三、特征点处理四、特征点描述子总结 引言 SIFT算法是为了解决图片的匹配问题&#xff0c;想要从图像中提取一种对图像的大小和旋转变化保持鲁棒的特征&#xff0c;从而实现匹配。这一算法的灵感也十分…...

Java中的接口到底是什么?

要说Java的【接口】&#xff0c;可以将其类比为现实生活中的一种约定或规范。在Java中&#xff0c;接口定义了一组方法的集合&#xff0c;但没有提供这些方法的具体实现。 你可以将接口看作是一个合同&#xff0c;它规定了一个类必须实现的一组方法。这些方法描述了类所需具备…...

Jpa与Druid线程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久层

Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二)&#xff1a;几个坑 附录官网文档&#xff1a;core.domain-events域事件 (一)Jpa与Druid连接池及Spring Boot整合作为持久层,遇到系列问题,下面一 一记录&#xff1a; pom.xml 文件中加入必须的…...

helm部署vmalert

先决条件 安装以下软件包&#xff1a;git, kubectl, helm, helm-docs&#xff0c;请参阅本教程。 在 CentOS 上启用 snap 并安装 helm 启用 snapd 使用以下命令将 EPEL 存储库添加到您的系统中&#xff1a; sudo yum install epel-release 按如下方式安装 Snap&#xff1…...

加工厂数字孪生3D可视化展示系统重塑管理模式

近年来“数字化转型”成立各行业聚焦的发展方向&#xff0c;在工业制造领域&#xff0c;智慧工业数字孪生可视化平台作为一种新型的技术手段&#xff0c;或将成为助力企业跑赢数字化转型最后一公里。 提高生产效率 传统的生产方式往往需要大量的人工干预&#xff0c;不仅耗时耗…...

php从静态资源到动态内容

1、从HTML到PHP demo.php:后缀由html直接改为php,实际上当前页面已经变成了动态的php应用程序脚本 demo.php: 允许通过<?php ... ?>标签,添加php代码到当前脚本中 php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析 <!DOCTYPE html>…...

JavaScript:模块化【CommonJS与ES6】

在 JavaScript 编程中&#xff0c;随着项目的复杂性增加&#xff0c;代码的组织和管理变得至关重要。模块化是一种强大的编程概念&#xff0c;它允许我们将代码划分为独立的模块&#xff0c;提高了可维护性和可扩展性。本文将详细介绍 CommonJS 和 ES6 模块&#xff0c;帮助你理…...

Redis—持久化

这里写目录标题 AOF三种写回策略写回策略的优缺点AOF 重写机制AOF后台重写AOF优缺点使用命令 RDBRDB 持久化的工作原理执行快照时&#xff0c;数据能被修改吗RDB 持久化的优点RDB 持久化的缺点 混合持久化大key对持久化的影响 AOF 保存写操作命令到日志的持久化方式&#xff0…...

【设计模式】代理模式

在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。 介绍 意图&#xff1a;为其他对象提供一种代理以…...

mac arm 通过brew搭建 php+nginx+mysql+xdebug

1.安装nginx brew install nginx //安装brew services start nginx //启动2.安装php brew install php7.4 //安装export PATH"/opt/homebrew/opt/php7.4/bin:$PATH" //加入环境变量 export PATH"/opt/homebrew/opt/php7.4/sbin:$PATH"brew serv…...

软信天成:告别手动编码,实现智能自动化云数据管理

数字化转型浪潮之下&#xff0c;各个企业都在大力投资新的基于云的流程、平台和环境&#xff0c;以期获取可扩展性、弹性、敏捷性和成本效益等优势。 这些趋势要求企业IT部门能够帮助组织&#xff0c;在对分析进行现代化改造的过程中达到云就绪或云优先状态。事实上&#xff0…...

易基因:ChIP-seq等揭示转录因子NRF1调控原始生殖细胞发育、增殖和存活的表观遗传机制|科研进展

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 原始生殖细胞&#xff08;Primordial germ cell&#xff0c;PGC&#xff09;是生殖细胞前体&#xff0c;可以产生卵母细胞和精子&#xff0c;确保生命延续。尽管PGC特化&#xff08;PGC …...

35岁,体能断崖?你需要健康的生活习惯

大厂裁员&#xff0c;称35岁以后体能下滑&#xff0c;无法继续高效率地完成工作&#xff1b;体重上涨&#xff0c;因为35岁以后新陈代谢开始变慢&#xff1b;甚至坐久了会腰疼、睡眠困扰开始加重&#xff0c;在众多的归因中&#xff0c;35岁的到来&#xff0c;为一切的焦虑埋下…...

mysql 习题总结

1.select sex,avg(salsry) as 平均薪资 from emp group by sex; 2.select depart,sum(salsry) from emp group by depart; 3.select depart ,sum(salary) from emp group by depart order by sum(salary) desc limit 1,1; 4.select name from emp group by name having count(n…...

IL汇编语言做一个窗体

网上看到一段代码&#xff0c; .assembly extern mscorlib {} .assembly Classes { .ver 1:0:1:0 } .namespace MyForm { .class public TestForm extends [System.Windows.Forms]System.Windows.Forms.Form { .field private class [System]…...

Youtu-Parsing模型重装系统后快速恢复:开发环境与模型服务一键配置脚本

Youtu-Parsing模型重装系统后快速恢复&#xff1a;开发环境与模型服务一键配置脚本 每次重装系统或者换新电脑&#xff0c;最头疼的是什么&#xff1f;对我来说&#xff0c;就是重新搭建开发环境。特别是那些依赖复杂的AI模型项目&#xff0c;比如Youtu-Parsing模型&#xff0…...

MacOS通过Rclone与macFUSE实现FTP本地化挂载全攻略

1. 为什么需要将FTP挂载到本地&#xff1f; 每次用FTP客户端传输文件都像在玩捉迷藏——先连接服务器&#xff0c;再一层层点开目录&#xff0c;最后才能找到需要的文件。这种操作方式对于需要频繁访问远程文件的用户来说&#xff0c;效率实在太低。想象一下&#xff0c;如果能…...

避坑指南:FCOS环境配置与训练中那些版本依赖的“坑”和解决方案(PyTorch 1.0+)

FCOS实战避坑手册&#xff1a;从环境配置到训练优化的全流程解决方案 如果你正在尝试部署FCOS目标检测模型&#xff0c;却频繁遭遇环境配置失败、版本冲突或训练异常等问题&#xff0c;这篇文章将为你提供一份详尽的避坑指南。不同于常规教程&#xff0c;这里聚焦于那些官方文档…...

C#批量生成带Logo的二维码?我写了个小工具解放双手(Free Spire.Barcode实战)

C#实战&#xff1a;批量生成带Logo的二维码自动化工具开发指南 每次需要为上百名员工生成工牌二维码时&#xff0c;手动操作不仅耗时还容易出错。作为技术负责人&#xff0c;我花了三个周末终于开发出一套稳定高效的解决方案。这套基于Free Spire.Barcode的自动化工具&#xff…...

Zabbix简介及部署

目录 一、Zabbix 核心介绍 1. 核心特性 2.核心组件&#xff08;架构&#xff09; 二、Zabbix 部署 步骤 1&#xff1a;系统初始化 步骤 2&#xff1a;服务器上部署zabbix-server 步骤 3&#xff1a;系统安装中文语言包 步骤 4&#xff1a;Web 界面初始化 步骤 5&#…...

线性稳压器1117选型指南:从性能测试到实际应用

1. 线性稳压器1117基础入门 第一次接触电子设计时&#xff0c;我被各种电源模块搞得晕头转向&#xff0c;直到老师递给我一片1117芯片。这个火柴头大小的元件&#xff0c;竟然能把5V电压稳稳地降到3.3V&#xff0c;当时就觉得特别神奇。现在做了这么多年硬件设计&#xff0c;11…...

HagiCode Desktop 混合分发架构解析:如何用 PP 加速大文件下载成

一、Actor 模型&#xff1a;不是并发技巧&#xff0c;而是领域单元 Actor 模型的本质是&#xff1a; Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是&#xff1a; 如何在不共享状…...

AI入门必看|零基础搞懂人工智能核心定义,避开入门误区

摘要&#xff1a;本文专为AI零基础小白打造&#xff0c;用大白话拆解人工智能的核心定义、发展脉络&#xff0c;厘清新手最易混淆的概念&#xff0c;帮你快速建立对AI的正确认知&#xff0c;迈出入门第一步&#xff0c;拒绝被专业术语劝退。关键词&#xff1a;人工智能入门&…...

实战指南:构建高可用集群的核心步骤与关键技术

构建高可用集群的核心步骤 高可用&#xff08;High Availability, HA&#xff09;集群旨在通过冗余设计和故障转移机制&#xff0c;确保服务在硬件或软件故障时仍能持续运行。以下是搭建高可用集群的核心步骤&#xff1a; 1. 需求分析与架构设计 明确目标&#xff1a;定义可…...

简报:2026年3月具身智能机器人融资情况

2026年3月&#xff0c;国内具身智能机器人赛道迎来融资热潮&#xff0c;在政策东风产业加速的双重驱动下&#xff0c;融资数量、金额、单笔规模均创历史新高&#xff0c;呈现出“大额融资密集、头部效应凸显、全产业链覆盖” 的爆发态势。具身人工智能&#xff08;E-AI&#xf…...