Spring JdbcTemplate详解
文章目录
- Spring JdbcTemplate详解
- 一、引言
- 二、配置JdbcTemplate
- 1、引入依赖
- 2、配置数据库连接池
- 3、配置JdbcTemplate
- 三、使用JdbcTemplate操作数据库
- 1、添加数据
- 2、查询数据
- 查询某个值
- 根据条件查询返回某个对象
- 查询对象集合
- 四、总结
Spring JdbcTemplate详解
一、引言
在Java开发中,数据库操作是常见的需求。JDBC作为Java连接数据库的标准接口,虽然功能强大,但代码繁琐且容易出错。Spring框架通过JdbcTemplate对JDBC进行了封装,简化了数据库操作,提高了开发效率。本文将详细介绍Spring JdbcTemplate的使用,包括配置、基本操作和示例代码。
二、配置JdbcTemplate
1、引入依赖
在Spring项目中使用JdbcTemplate,首先需要引入相关依赖。以下是Maven依赖配置:
<dependencies><!-- Spring Context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.16</version></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency><!-- Spring JDBC --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.16</version></dependency><!-- Druid Connection Pool --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency>
</dependencies>
2、配置数据库连接池
使用Druid作为数据库连接池,配置jdbc.properties文件:
url=jdbc:mysql://localhost:3306/your_database?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username=root
password=your_password
driver-class-name=com.mysql.cj.jdbc.Driver
在Spring配置文件中引入jdbc.properties并配置Druid数据源:
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/><property name="driverClassName" value="${driver-class-name}"/>
</bean>
3、配置JdbcTemplate
在Spring配置文件中配置JdbcTemplate对象,并注入DataSource:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/>
</bean>
三、使用JdbcTemplate操作数据库
1、添加数据
创建Man实体类,并在Dao接口中定义添加方法:
public interface ManDao {int addEntity(Man man);
}
实现Dao接口,并使用JdbcTemplate添加数据:
@Repository
public class ManDaoImpl implements ManDao {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int addEntity(Man man) {String sql = "insert into t_man(user_name, sex) values(?,?)";return jdbcTemplate.update(sql, man.getUserName(), man.getSex());}
}
2、查询数据
查询某个值
在Dao接口中定义查询方法,并在实现类中使用JdbcTemplate查询:
public interface ManDao {String getNameByUserId(int id);
}@Override
public String getNameByUserId(int id) {String sql = "select user_name from t_man where uid = ?";return jdbcTemplate.queryForObject(sql, String.class, id);
}
根据条件查询返回某个对象
在Dao接口中定义查询方法,并使用BeanPropertyRowMapper返回对象:
public interface ManDao {Man getEntityById(int id);
}@Override
public Man getEntityById(int id) {String sql = "select uid, user_name userName, sex from t_man where uid = ?";return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Man>(Man.class), id);
}
查询对象集合
定义查询所有数据的方法:
public interface ManDao {List<Man> findAll();
}@Override
public List<Man> findAll() {String sql = "select uid, user_name userName, sex from t_man";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Man>(Man.class));
}
四、总结
Spring JdbcTemplate提供了一个简便的方法来执行数据库操作,通过封装JDBC,减少了模板化的代码,提高了开发效率。本文介绍了JdbcTemplate的基本配置和使用方法,包括添加、查询等基本操作。通过实际代码示例,可以帮助开发者快速上手JdbcTemplate。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- Spring JdbcTemplate详解
- Spring学习之JdbcTemplate
相关文章:
Spring JdbcTemplate详解
文章目录 Spring JdbcTemplate详解一、引言二、配置JdbcTemplate1、引入依赖2、配置数据库连接池3、配置JdbcTemplate 三、使用JdbcTemplate操作数据库1、添加数据2、查询数据查询某个值根据条件查询返回某个对象查询对象集合 四、总结 Spring JdbcTemplate详解 一、引言 在J…...
Docker篇(Docker安装)
目录 一、Centos7.x 1. yum 包更新到最新 2. 安装需要的软件包 3. 设置 yum 源为阿里云 4. 安装docker 5. 安装后查看docker版本 6. 设置ustc镜像源 二、CentOS安装Docker 前言 1. 卸载(可选) 2. 安装docker 3. 启动docker 4. 配置镜像加速 …...
Pytorch 实现图片分类
CNN 网络适用于图片识别,卷积神经网络主要用于图片的处理识别。卷积神经网络,包括一下几部分,输入层、卷积层、池化层、全链接层和输出层。 使用 CIFAR-10 进行训练, CIFAR-10 中图片尺寸为 32 * 32。卷积层通过卷积核移动进行计…...
得物App获评新奖项,正品保障夯实供应链创新水平
近日,得物App再度获评新奖项——“2024上海市供应链创新与应用优秀案例”。 本次奖项为上海市供应链领域最高奖项,旨在评选出在供应链创新成效上处于领先地位、拥有成功模式和经验的企业。今年以来,得物App已接连获得“上海市质量金奖”、“科…...
【数据结构-邻项消除】力扣735. 小行星碰撞
给定一个整数数组 asteroids,表示在同一行的小行星。 对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。 找…...
002-Kotlin界面开发之Kotlin旋风之旅
Kotlin旋风之旅 Compose Desktop中哪些Kotlin知识是必须的? 在学习Compose Desktop中,以下Kotlin知识是必须的: 基础语法:包括变量声明、数据类型、条件语句、循环等。面向对象编程:类与对象、继承、接口、抽象类等。…...
VMware Workstation Pro for Personal Use (For Windows)
这是从broadcom.com网下载的个人版本的Vmware 17.6.1,存分享不要分。 VMware-workstation-full-17.6.1-24319023.exe(447.93 MB) Build Number: 24319023 Oct 08, 2024 07.33AM SHA2: f95429e395a583eb5ba91f09b040e2f8c53a5e7aa37c4c6bfcaf82115a8…...
论文 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES
1. 背景信息 在信息检索领域,传统的方法往往依赖于大量的标注数据来训练模型,以便在各种任务中表现良好。然而,许多实际应用中的监督数据是有限的,尤其是在不同的检索任务中。最近的研究开始关注如何从一个拥有丰富监督数据的任务…...
使用 Github 进行项目管理
GitHub 是一个广泛使用的代码托管和协作平台,它提供了强大的工具来支持项目管理和团队协作。在项目开发和工作中,避免不了 Github 的使用,然鹅我一直没有稍微系统地学习过 github 的整个工作流程,对这些操作都是一知半解的&#x…...
企业SRC挖掘选择与信息收集指南
内容预览 ≧∀≦ゞ 企业SRC挖掘选择与信息收集指南导语1. 企业SRC的选择2. 信息收集2.1 集团与子公司2.2 小程序与APP2.3 Web端信息收集 3. 信息收集常用模板总结 企业SRC挖掘选择与信息收集指南 导语 近年来,企业的安全响应中心(SRC)已逐渐…...
Golang | Leetcode Golang题解之第524题通过删除字母匹配到字典里最长单词
题目: 题解: func findLongestWord(s string, dictionary []string) (ans string) {m : len(s)f : make([][26]int, m1)for i : range f[m] {f[m][i] m}for i : m - 1; i > 0; i-- {f[i] f[i1]f[i][s[i]-a] i}outer:for _, t : range dictionary …...
【DBeaver】连接带kerberos的hive[Apache|HDP]
目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下:https://web.mit.edu/kerberos…...
Unity3D 开发教程:从入门到精通
Unity3D 开发教程:从入门到精通 Unity3D 是一款强大的跨平台游戏引擎,广泛应用于游戏开发、虚拟现实、增强现实等领域。本文将详细介绍 Unity3D 的基本概念、开发流程以及一些高级技巧,帮助你从零基础到掌握 Unity3D 开发。 目录 Unity3D…...
文件操作和 IO(一):文件基础知识 文件系统操作 => File类
目录 1. 什么是文件 1.1 概念 1.2 硬盘, 内存, 寄存器之间的区别 1.3 机械硬盘和固态硬盘 2. 文件路径 2.1 绝对路径 2.2 相对路径 3. 文件分类 4. File 类 4.1 属性 4.2 构造方法 4.3 方法 1. 什么是文件 1.1 概念 狭义上的文件: 保存在硬盘上的文件广义的上的文…...
用Pyhon写一款简单的益智类小游戏——2048
文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…...
akshare股票涨跌幅自定义范围查询:A股、港股、美股
参看:https://stock.hexun.com/2024-10-31/215251914.html 涨幅计算公式:(当前价格 - 上一个交易日收盘价) 上一个交易日收盘价 100% 。 跌幅计算公式:(上一个交易日收盘价 - 当前价格) 上一个…...
通过js控制修改css变量
在JavaScript中,你可以通过操作CSS变量(也称为自定义属性)来动态改变样式。CSS变量在CSS中使用 – 前缀定义,例如 --main-color: red;。在JavaScript中,你可以使用 document.documentElement.style.setProperty 方法来…...
<HarmonyOS第一课>HarmonyOS SDK开放能力简介的课后习题
不出户,知天下; 不窥牖,见天道。 其出弥远,其知弥少。 是以圣人不行而知,不见而明,不为而成。 本篇<HarmonyOS第一课>HarmonyOS SDK开放能力简介是简单介绍了HarmonyOS SDK,不需要大家过多…...
深度学习:yolo的使用--图像处理
定义了一个名为 ListDataset 的类,它继承自 PyTorch 的 Dataset 类,这个数据集从一个包含图像文件路径的列表中读取图像和对应的标签文件 class ListDataset(Dataset):def __init__(self, list_path, img_size416, augmentTrue, multiscaleTrue, normalized_labelsT…...
TypeScript实用笔记(一):初始化、类型定义与函数使用
文章目录 一、ts初始化1. 初始化.json文件一2. 启动方式2.1 直接运行.ts文件2.2 转换运行 二、类型1. 参数类型1.1 常规参数1.2 symbol1.3 数组\[]1.4 元组\[]1.5 用字面量定义数据类型 2. Object3. 枚举类型\[Enum]3.1 数字枚举3.2 字符串枚举 三、 类型别名1. 数组别名使用2.…...
AI辅助开发:用快马平台打造为openclaw智能推荐模型的AI助手
最近在尝试用AI来优化AI开发流程时,发现模型选择这个环节特别值得自动化。比如在用openclaw这类工具时,每次面对不同任务都要手动切换模型,既费时又容易选错。于是基于InsCode(快马)平台做了个智能模型推荐器,效果出乎意料地好用。…...
实战演练,基于快马生成跨平台项目掌握keil5下c51与stm32协同开发
最近在做一个物联网温湿度监测项目时,遇到了一个很实际的需求:需要在不同硬件平台上测试同一套业务逻辑。具体来说,既要能在成本较低的51单片机(比如STC89C52)上运行,又要在性能更强的STM32上验证功能。经过…...
BilibiliDown:高效下载B站视频的3步实战指南
BilibiliDown:高效下载B站视频的3步实战指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibil…...
抖音视频智能下载器:企业级内容管理解决方案的技术架构与效率革命
抖音视频智能下载器:企业级内容管理解决方案的技术架构与效率革命 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…...
YOLO12轻量化部署教程:40MB模型在边缘GPU设备上的高效运行方案
YOLO12轻量化部署教程:40MB模型在边缘GPU设备上的高效运行方案 1. 引言:为什么你需要关注YOLO12的轻量化部署? 如果你正在为边缘设备寻找一个既快又准的目标检测方案,那么YOLO12的出现绝对值得你花时间了解。这个2025年最新发布…...
Ai2Psd:跨软件矢量图形无损转换的技术突破
Ai2Psd:跨软件矢量图形无损转换的技术突破 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 在数字设计工作流中,Adobe …...
别再只跑MACS2了!ChIP-seq下游分析进阶:用Bedtools和R玩转峰值比较与可视化
别再只跑MACS2了!ChIP-seq下游分析进阶:用Bedtools和R玩转峰值比较与可视化 当你拿到MACS2输出的.narrowPeak文件时,真正的生物学故事才刚刚开始。许多研究者止步于基础峰值调用,却错过了隐藏在多个实验重复或不同处理条件间的关键…...
告别中文文献管理烦恼:Jasminum插件如何让你的Zotero效率提升300%
告别中文文献管理烦恼:Jasminum插件如何让你的Zotero效率提升300% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在…...
5步解决魔兽争霸3兼容性难题:从卡顿到流畅的完美蜕变
5步解决魔兽争霸3兼容性难题:从卡顿到流畅的完美蜕变 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 如何判断你的魔兽争霸3需要优化&…...
DeOldify模型压缩与量化教程:适配边缘计算设备部署
DeOldify模型压缩与量化教程:适配边缘计算设备部署 想让老照片在手机上瞬间焕发色彩吗?DeOldify模型以其出色的黑白照片上色效果而闻名,但它的“体重”对于手机、树莓派这类边缘设备来说,可能有点“超重”了。直接部署原版模型&a…...
