目录

1. Spring JDBC 简介

2. JdbcTemplate 介绍

3. 创建数据库和表

4. 配置 Spring JDBC

5. 创建实体类

6. 使用 JdbcTemplate 实现增、删、改、查操作

7. Spring JDBC 优点

8. 小结


1. Spring JDBC 简介

        Spring JDBC 是 Spring 框架中的一个模块,旨在简化数据库访问操作。它通过封装底层的 JDBC API,减少了繁琐的代码,提高了开发效率。传统的 JDBC 编程要求开发人员手动处理数据库连接、SQL 执行、错误处理以及资源释放等。而 Spring JDBC 通过提供 JdbcTemplate 类以及其他辅助工具,屏蔽了这些底层细节,使得数据库操作更加简单、直观且易于维护。

2. JdbcTemplate 介绍

JdbcTemplate 是 Spring 框架中用于简化 JDBC 操作的核心类,它对传统的 JDBC API 做了封装,提供了丰富的方法,方便开发人员进行数据库操作。主要的操作包括执行增、删、改、查等操作。

常用的 JdbcTemplate 方法类型
  1. execute 方法execute 方法可以用于执行任何 SQL 语句,一般用于执行 DDL(Data Definition Language)语句,比如创建表、删除表等。

    jdbcTemplate.execute("CREATE TABLE user (...);");
    
  2. update 和 batchUpdate 方法

    • update 用于执行新增、修改、删除等语句。
    • batchUpdate 用于批量执行 SQL 操作,可以显著提高效率。
    jdbcTemplate.update("INSERT INTO user (username, address) VALUES (?, ?)", "李连杰", "上海");
    
  3. query 和 queryForXXX 方法

    • query 用于查询返回多个结果的 SQL 语句。
    • queryForObjectqueryForList 等方法用于查询单个对象或列表。
    List<User> users = jdbcTemplate.query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class));
    
  4. call 方法call 方法用于执行数据库的存储过程或函数。

    jdbcTemplate.call("{CALL some_procedure(?)}", params);
    

3. 创建数据库和表

首先,我们需要在 MySQL 数据库中创建一个示例数据库,并在其中创建一个简单的用户表 user

CREATE DATABASE mybatis_demo;USE mybatis_demo;CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT,`username` VARCHAR(32) NOT NULL COMMENT '用户名称',`birthday` DATETIME DEFAULT NULL COMMENT '生日',`sex` CHAR(1) DEFAULT NULL COMMENT '性别',`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入一些示例数据
INSERT INTO `user` (`id`, `username`, `birthday`, `sex`, `address`) VALUES
(1, '老王', '2018-02-27 17:47:08', '男', '北京'),
(2, '熊大', '2018-03-02 15:09:37', '女', '上海'),
(3, '熊二', '2018-03-04 11:34:34', '女', '深圳'),
(4, '光头强', '2018-03-04 12:04:06', '男', '广州');

4. 配置 Spring JDBC

接下来,我们在 Spring 配置文件中添加数据库连接池和 JdbcTemplate 配置:

applicationContext.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置连接池 DriverManagerDataSource --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/><property name="password" value="2020"/></bean><!-- 配置 JdbcTemplate --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/></bean>
</beans>

5. 创建实体类

在 Java 中,我们需要为 user 表创建一个实体类 User,该类的属性应与数据库表的列对应:

public class User {private Integer id;private String username;private Date birthday;private String sex;private String address;// getters and setters
}

6. 使用 JdbcTemplate 实现增、删、改、查操作

插入数据
@Test
public void testInsert() {String sql = "INSERT INTO user (username, address) VALUES (?, ?)";jdbcTemplate.update(sql, "李连杰", "上海");
}
更新数据
@Test
public void testUpdate() {String sql = "UPDATE user SET username = ?, address = ? WHERE id = ?";int result = jdbcTemplate.update(sql, "稳杰", "南海", 2);System.out.println("更新的记录数: " + result);
}
删除数据
@Test
public void testDelete() {String sql = "DELETE FROM user WHERE id = ?";int result = jdbcTemplate.update(sql, 18);System.out.println("删除的记录数: " + result);
}
查询数据(单表查询)
@Test
public void testQueryList() {String sql = "SELECT * FROM user WHERE address LIKE '%京%'";List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));System.out.println("查询结果:");for (User user : users) {System.out.println(user);}
}
查询单个对象
@Test
public void testQueryForObject() {String sql = "SELECT * FROM user WHERE id = ?";User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), 1);System.out.println(user);
}

7. Spring JDBC 优点

  • 简化数据库操作JdbcTemplate 封装了 JDBC 操作,减少了开发人员手动处理数据库连接、异常捕获、资源释放等的工作。
  • 降低代码冗余:对于同类型的操作(如执行增删改查),不再需要写重复的代码,减少了开发工作量。
  • 支持事务管理:Spring JDBC 与 Spring 的事务管理无缝集成,能有效管理数据库事务。
  • 灵活性高:尽管 Spring JDBC 封装了很多常见操作,但它并没有限制开发人员的操作,开发者可以使用原生 SQL 执行任何复杂的数据库操作。

8. 小结

        通过使用 Spring JDBC 和 JdbcTemplate,我们可以大大简化数据库操作。Spring JDBC 提供了高效的资源管理、异常处理、SQL 执行等能力,使得开发人员能够更加专注于业务逻辑的实现,而不必纠结于底层的数据库操作细节。结合 Spring 的事务管理机制,可以保证数据库操作的可靠性和一致性。

        Spring JDBC 的强大功能,使其在许多中小型项目中成为数据库操作的首选方案,尤其是在不需要 ORM(如 Hibernate)框架的情况下,Spring JDBC 提供了简洁而高效的数据库访问方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/894385.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/894385.shtml
英文地址,请注明出处:http://en.pswp.cn/news/894385.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF [Black Watch 入群题]PWN1 题解

1.下载文件 exeinfo checksec 32位 IDA32 看到关键函数 read两次 第一次read的变量s在bss段&#xff1b;第二次的buf到ebp距离为 24 但是第二次的read字节只能刚好填满返回地址 传不进去变量 所以想到栈迁移 将栈移动到变量s所在位置上来 同时 这题开了NX 无直接的binsh和s…

CentOS 上安装 Go (Golang)

1. 检查系统环境 确保系统为 CentOS 7 或 CentOS 8&#xff0c;或者其他兼容的 Linux 发行版。 cat /etc/os-release2. 安装依赖 安装一些必要的工具&#xff1a; sudo yum update -y sudo yum install -y wget tar3. 下载 Go 从 Go 官方下载页面获取适用于 Linux 的最新版…

chrome源码剖析—进程通信

Chrome 浏览器采用多进程架构&#xff08;multi-process architecture&#xff09;&#xff0c;这种架构使得每个浏览器标签、扩展、插件、GPU 渲染等都在独立的进程中运行。为了确保不同进程之间的高效通信&#xff0c;Chrome 使用 进程间通信&#xff08;IPC, Inter-Process …

Cubemx文件系统挂载多设备

cubumx版本&#xff1a;6.13.0 芯片&#xff1a;STM32F407VET6 在上一篇文章中介绍了Cubemx的FATFS和SD卡的配置&#xff0c;由于SD卡使用的是SDIO通讯&#xff0c;因此具体驱动不需要自己实现&#xff0c;Cubemx中就可以直接配置然后生成SDIO的驱动&#xff0c;并将SD卡驱动和…

java练习(2)

回文数&#xff08;题目来自力扣&#xff09; 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整…

使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践

Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI&#xff0c;是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手&#xff0c;感觉收获还蛮多的&#xff0c;今天来分享下开发过程中的一些经验~ 为啥要做这个…

ComfyUI安装调用DeepSeek——DeepSeek多模态之图形模型安装问题解决(ComfyUI-Janus-Pro)

ComfyUI 的 Janus-Pro 节点&#xff0c;一个统一的多模态理解和生成框架。 试用&#xff1a; https://huggingface.co/spaces/deepseek-ai/Janus-1.3B https://huggingface.co/spaces/deepseek-ai/Janus-Pro-7B https://huggingface.co/spaces/deepseek-ai/JanusFlow-1.3B 安装…

索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢

索引的底层数据结构 MySQL中常用的是Hash索引和B树索引 Hash索引&#xff1a;基于哈希表实现的&#xff0c;查找速度非常快&#xff0c;但是由于哈希表的特性&#xff0c;不支持范围查找和排序&#xff0c;在MySQL中支持的哈希索引是自适应的&#xff0c;不能手动创建 B树的…

RK3568中使用QT opencv(显示基础图像)

文章目录 一、查看对应的开发环境是否有opencv的库二、QT使用opencv一、查看对应的开发环境是否有opencv的库 在开发板中的/usr/lib目录下查看是否有opencv的库: 这里使用的是正点原子的ubuntu虚拟机,在他的虚拟机里面已经安装好了opencv的库。 二、QT使用opencv 在QT pr…

29.Word:公司本财年的年度报告【13】

目录 NO1.2.3.4 NO5.6.7​ NO8.9.10​ NO1.2.3.4 另存为F12&#xff1a;考生文件夹&#xff1a;Word.docx选中绿色标记的标题文本→样式对话框→单击右键→点击样式对话框→单击右键→修改→所有脚本→颜色/字体/名称→边框&#xff1a;0.5磅、黑色、单线条&#xff1a;点…

【数据分析】案例03:当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib)

当当网近30日热销图书的数据采集与可视化分析(scrapy+openpyxl+matplotlib) 当当网近30日热销书籍官网写在前面 实验目的:实现当当网近30日热销图书的数据采集与可视化分析。 电脑系统:Windows 使用软件:Visual Studio Code Python版本:python 3.12.4 技术需求:scrapy、…

数据库对象

数据库对象 数据库对象是构成数据库结构的基本单位&#xff0c;它们定义了数据库存储的数据类型、数据的组织方式以及数据之间的关系。在数据库中&#xff0c;对象可以包括表&#xff0c;视图&#xff0c;索引&#xff0c;触发器&#xff0c;存储过程&#xff0c;函数等多种类…

Super AGI 2025 ,人形机器人,芯片半导体,价值+量化投资最佳实践

Super AGI 2025&#xff1a;人形机器人、芯片半导体与价值量化投资最佳实践 关键词&#xff1a;Super AGI、人形机器人、芯片半导体、价值投资、量化投资、技术趋势、投资策略 摘要&#xff1a;本文探讨了Super AGI、人形机器人和芯片半导体领域的发展前景&#xff0c;并结合价…

AI学习指南Ollama篇-使用Ollama构建自己的私有化知识库

一、引言 (一)背景介绍 随着企业对数据隐私和效率的重视,私有化知识库的需求日益增长。私有化知识库不仅可以保护企业数据的安全性,还能提供高效的知识管理和问答系统,提升企业内部的工作效率和创新能力。 (二)Ollama和AnythingLLM的结合 Ollama和AnythingLLM的结合…

省级-新质生产力数据(2010-2022年)-社科数据

省级-新质生产力数据&#xff08;2010-2022年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90028612 https://download.csdn.net/download/paofuluolijiang/90028612 新质生产力是指在现代科技和经济社会发展的推动下&#xff0c;由新的生产要素…

用一个例子详细说明python单例模式

单例模式是一种设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。这在需要控制资源&#xff08;如数据库连接、文件系统等&#xff09;的访问时非常有用。 下面是一个使用Python实现单例模式的例子&#xff1a; class Singleton:…

【PyTorch】7.自动微分模块:开启神经网络 “进化之门” 的魔法钥匙

目录 1. 梯度基本计算 2. 控制梯度计算 3. 梯度计算注意 4. 小节 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活…

【数据分析】案例04:豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)

豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…

Ubuntu20.04 深度学习环境配置(持续完善)

文章目录 常用的一些命令安装 Anaconda创建conda虚拟环境查看虚拟环境大小 安装显卡驱动安装CUDA安装cuDNN官方仓库安装 cuDNN安装 cuDNN 库验证 cuDNN 安装确认 CUDA 和 cuDNN 是否匹配&#xff1a; TensorRT下载 TensorRT安装 TensorRT 本地仓库配置 GPG 签名密钥安装 Tensor…

元宇宙与Facebook:社交互动的未来方向

随着技术的飞速发展&#xff0c;元宇宙逐渐成为全球科技领域关注的焦点。作为一种集沉浸式体验、虚拟空间和数字社交互动为一体的新型平台&#xff0c;元宇宙正在重新定义人类的社交方式。而在这一变革中&#xff0c;Facebook&#xff08;现改名为Meta&#xff09;作为全球领先…