Spring JdbcTemplate详解

文章目录

  • Spring JdbcTemplate详解
    • 一、引言
    • 二、配置JdbcTemplate
      • 1、引入依赖
      • 2、配置数据库连接池
      • 3、配置JdbcTemplate
    • 三、使用JdbcTemplate操作数据库
      • 1、添加数据
      • 2、查询数据
        • 查询某个值
        • 根据条件查询返回某个对象
        • 查询对象集合
    • 四、总结

Spring JdbcTemplate详解

一、引言

在Java开发中,数据库操作是常见的需求。JDBC作为Java连接数据库的标准接口,虽然功能强大,但代码繁琐且容易出错。Spring框架通过JdbcTemplateJDBC进行了封装,简化了数据库操作,提高了开发效率。本文将详细介绍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

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

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

相关文章

【GO学习笔记 go基础】访问控制

Go 没有显式的 private、public 关键字&#xff0c;通过首字母大小写进行访问控制标识。在 Go 中&#xff0c;名称首字母大写表示这个名称&#xff08;变量、函数、结构体等&#xff09;是 导出的&#xff0c;可以在包外部被访问和使用。 1. 导出函数 package examplefunc Set…

【单片机】深入剖析USART与UART的区别

在嵌入式系统和微控制器开发中&#xff0c;串行通信是一个非常关键的概念&#xff0c;涉及到不同设备之间的数据传输。常见的串行通信协议包括UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;和USART&#xff08;Universal Synchronous/Asynchronous…

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接&#xff1a;https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题&#xff0c;贪心解法真的非常妙&#xff0c;参考下面题解&#xff1a;https://leetcode.cn/problems/wiggle…

淘宝商品评价API的获取与应用

在当今数字化时代&#xff0c;电商平台如淘宝已成为消费者购物的重要渠道。对于商家和开发者而言&#xff0c;如何高效地获取并利用商品评价数据&#xff0c;成为了提升产品竞争力和优化用户体验的关键。本文将详细介绍如何使用淘宝开放平台提供的商品评论API来获取这些宝贵的数…

Android 9.0 修改WLAN热点名称为MAC地址后四位

这个需求主要是读取mac地址,mac地址一般是用写号工具写入到NVRAM,所以需要从NVRAM读取准确的地址。 导入nvram操作用到的库&#xff1a; frameworks/opt/net/wifi/service/Android.mk LOCAL_STATIC_JAVA_LIBRARIES : \vendor.mediatek.hardware.nvram-V1.0-java读取wifi mac…

类和对象(中)—— 类的六个默认成员函数

目录 1.类中的默认成员函数 2.构造函数 为什么要有构造函数 什么是构造函数 构造函数做了什么 默认生成的构造函数功能的分析 C11的补救 什么时候自己写构造函数 3.析构函数 为什么要有析构函数 什么是析构函数 析构函数做了什么 默认生成的析构函数功能的分析 什…

Java Executor ScheduledExecutorService 源码

前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …

数据结构,问题 C: 后缀表达式

题目描述 所谓后缀表达式是指这样的一个表达式&#xff1a;式中不再引用括号&#xff0c;运算符号放在两个运算对象之后&#xff0c;所有计算按运算符号出现的顺序&#xff0c;严格地由左而右新进行&#xff08;不用考虑运算符的优先级&#xff09;。 如&#xff1a;3*(5–2)7对…

[C++]C++知识点总结(Xmind思维导图)

目录 一、C入门基础 二、类和对象 三、C/C内存管理 四、模板 五、C的IO流 六、继承 七、多态 八、C11 九、智能指针 十、类型转换 由于C知识体系过于庞大&#xff0c;分为下面几个部分列出逻辑图&#xff08;有些不完整&#xff0c;后续更新中...&#xff09; 一、C入…

字符串、字节流与十六进制字符串的转换:Python、C 和 Go 的实现对比20241029

字符串、字节流与十六进制字符串的转换&#xff1a;Python、C 和 Go 的实现对比 引言 在数据处理过程中&#xff0c;字符串、字节流和十六进制字符串之间的转换至关重要。这些转换在网络传输、文件存储和数据处理等场景中具有广泛的应用。本文将通过 Python、C 和 Go 三种语言…

Elasticsearch分词器基础安装

简介 Elasticsearch (ES) 是一个基于 Lucene 的搜索引擎&#xff0c;分词器是其核心组件之一&#xff0c;负责对文本数据进行分析和处理。 1. 文本分析 分词器将输入的文本拆分成一个个单独的词&#xff08;tokens&#xff09;&#xff0c;以便后续的索引和搜索。例如&#x…

Vue 3:解析

写在前面 Vue 3 是流行的 JavaScript 框架 Vue.js 的最新主要版本。它带来了显著的改进和新功能&#xff0c;增强了开发者体验并使构建复杂应用程序变得更容易。在本文中&#xff0c;我们将深入探讨 Vue 3 中的关键变化和新增功能。 安装 要开始使用 Vue 3&#xff0c;可以通…

五、Go语言快速入门值条件控制

&#x1f4c5; 2024年4月28日 &#x1f4e6; 使用版本为1.21.5 条件判断和循环判断 If/switch条件判断 ⭐️ 和其他语言一样拥有if else if else和switch语句 1️⃣ if else if else func main() {score : 90var ans stringif score > 0 && score < 60 {an…

EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于opencv答题卡识别判卷】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【G…

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…

影刀RPA自动化按钮参数详解

文章目录 一、基础识别参数1. 文本内容&#xff08;Text&#xff09;2. ID属性3. Name属性4. Class属性 二、高级定位参数1. XPath路径2. CSS选择器3. 图像识别 三、动态等待参数1. 等待超时2. 重试间隔 四、操作参数1. 点击类型2. 点击位置 五、最佳实践1. 按钮定位优先级2. 常…

WPF+MVVM案例实战(十四)- 封装一个自定义消息弹窗控件(下)

文章目录 1、案例效果2、弹窗控件使用1.引入用户控件2、按钮命令实现 3、总结4、源代码获取 1、案例效果 2、弹窗控件使用 1.引入用户控件 打开 Wpf_Examples 项目&#xff0c;在引用中添加用户控件库&#xff0c;在 MainWindow.xaml 界面引用控件库&#xff0c;代码如下&…

C++(类继承、虚函数、多重继承)

类继承 &#xff08;1&#xff09;当创建一个类时&#xff0c;不需要重新编写新的成员变量和成员函数&#xff0c;只需要新建的类继承了一个已有的类的成员。已有的类称为基类或父类&#xff0c;新建的类称为派生类或子类。 &#xff08;2&#xff09;一个类可以有多个…

经典面试题收集(持续更新)

有一个月没有关注招聘信息了&#xff0c;我感觉还是要持续关注这些内容才行。要知道自己毕业季时想找什么方向的工作&#xff0c;不是一时半会就能确定的。假如现在就到了秋招的时候&#xff0c;面对如此多的招聘信息&#xff0c;你该如何选择&#xff1f; 针对这个情况&#…

Redis 主从同步 问题

前言 相关系列 《Redis & 目录》《Redis & 主从同步 & 源码》《Redis & 主从同步 & 总结》《Redis & 主从同步 & 问题》 参考文献 《Redis的主从复制和哨兵机制详解》 什么是主从同步&#xff1f; 主从同步是Redis用于提高数据可用/可靠性…