Java:SpringBoot整合JDBC实现对数据库的CURD增删改查

news/2025/2/3 21:56:25/

JDBC 是 Java数据库连接,是 Java Database Connectivity 的 简称,是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法

完整代码:https://github.com/mouday/spring-boot-demo/SpringBoot-JDBC

引入依赖

jdbc依赖

<!--spring jdbc  Spring 持久化层支持jar包-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency><!-- MySQL驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency><!-- 数据源 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.15</version>
</dependency>

完整pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><!--spring jdbc  Spring 持久化层支持jar包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- 数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.15</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

创建数据表

CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL COMMENT '姓名',`age` int(11) DEFAULT NULL COMMENT '年龄',`sex` varchar(2) DEFAULT NULL COMMENT '性别',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

实体类对象

package com.example.demo.entity;import lombok.Data;@Data
public class User {private Integer id;private String name;private Integer age;private String sex;
}

数据库配置

application.yml

# DataSource Config
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/data?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456

CURD测试

package com.example.demo;import com.example.demo.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;@SpringBootTest
class ApplicationTests {@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 添加数据*/@Testvoid testAdd() {String sql = "insert into t_user (name, age, sex) values (?, ?, ?)";int update = jdbcTemplate.update(sql, "张三", 20, "男");System.out.println(update); // 1}/*** 更新数据*/@Testvoid testUpdate() {String sql = "update t_user set name = ? where id = ?";int update = jdbcTemplate.update(sql, "李四", 1);System.out.println(update); // 1}/*** 删除数据*/@Testvoid testDelete() {String sql = "delete from t_user where id = ?";int update = jdbcTemplate.update(sql, 1);System.out.println(update); // 1}/*** 查询单条数据*/@Testvoid testSelectOne() {String sql = "select * from t_user where id = ?";User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(User.class),1);System.out.println(user);// User(id=1, name=张三, age=20, sex=男)}/*** 查询多条数据*/@Testvoid testSelectList() {String sql = "select * from t_user where id = ?";List<User> user = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class),1);System.out.println(user);// [User(id=1, name=张三, age=20, sex=男)]}/*** 查询单个数据*/@Testvoid testSelectCount() {String sql = "select count(*) from t_user";Integer count = jdbcTemplate.queryForObject(sql, Integer.class);System.out.println(count);// 1}
}

参考文章

  1. Spring Boot 集成 JDBC

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

相关文章

表存储数据模型:宽列和时间序列

表格存储是阿里云第一个分布式多模型数据库&#xff0c;是一种NoSQL数据库。目前&#xff0c;很多应用系统底层不再单纯依赖关系型数据库&#xff0c;而是根据不同的业务场景使用不同的数据库。例如&#xff0c;缓存KeyValue数据将存储在Redis中&#xff0c;文档数据将存储在Mo…

驱动开发LED灯绑定设备文件

头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;#define PHY_LED1_ADDR 0x50006000 #define PHY_LED2_ADDR 0x50007000 #defin…

vue 生命周期钩子函数 created()案例

通过发请求来获取数据。在数据响应化之后&#xff0c;dom搭建之前&#xff0c;通过发送axios来获取数据并初始化。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

UVM 验证方法学之interface学习系列文章(八)《interface不小心引入X态问题》

前面的文章学习,想必大家都对interface 有了深入了解。大家可不要骄傲哦,俗话说:小心驶得万年船。今天,再给大家介绍一个工作中,不是经常遇到,但是一旦遇到,会让你纠结很久的事情。 前面文章提到,随着验证复杂度的不断增加,interface 的bind 的操作,是必不可少的用法…

《红蓝攻防对抗实战》四.内网探测协议出网之ICMP协议探测出网

目录 一.Windows系统探测ICMP协议出网 1. Ping命令 2.Tracert 命令 二.Linux系统探测ICMP协议出网 1. Ping命令 ICMP&#xff08;Internet Control Message Protocol&#xff09;是一种面向无连接的协议&#xff0c;属于网络层的协议&#xff0c;用于检测网络通信故障和实…

使用Java实现汉诺塔问题~

我们设A为起始柱子&#xff0c;B为辅助柱子&#xff0c;C为目标柱子 由于盘子只能是大的放在下面&#xff0c;小的放在上面&#xff0c;因此&#xff0c;我们需要先将A柱子除了最下层的盘子都移动至B柱子 如下所示完成了最下层柱子到达它的最终位置&#xff0c;接下来&#xf…

【大数据 - Doris 实践】数据表的基本使用(四):动态分区

数据表的基本使用&#xff08;四&#xff09;&#xff1a;动态分区 1.原理2.使用方式3.动态分区规则参数3.1 主要参数3.2 创建历史分区的参数3.3 创建历史分区规则3.4 创建历史分区举例3.5 注意事项 4.示例4.1 创建动态分区表4.2 查看动态分区表调度情况4.3 查看表的分区4.4 插…

ES(elasticsearch) - kibana导出csv

前言 主要记录使用Kibana导出查询结果的csv文件&#xff0c;以及相关的导出配置 1.条件过滤 Discover -> 选择索引模式 -> 选择要显示字段 -> 输入你的查询条件 -> 选择时间范围 -> 点击保存 2.下载 management> Kibana > Reporting 中下载 3.常见问题…