spring 笔记七 Spring JdbcTemplate

文章目录

  • Spring JdbcTemplate
    • JdbcTemplate概述
    • JdbcTemplate开发步骤
    • Spring产生JdbcTemplate对象

Spring JdbcTemplate

JdbcTemplate概述

它是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

JdbcTemplate开发步骤

① 导入spring-jdbc和spring-tx坐标
② 创建数据库表和实体
③ 创建JdbcTemplate对象
④ 执行数据库操作

导入spring-jdbc和spring-tx坐标

 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.8.RELEASE</version></dependency><!--导入spring的tx坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.8.RELEASE</version></dependency>

创建accout表和Accout实体
在这里插入图片描述

public class Account {private String name;private double money;//省略get和set方法
}

创建JdbcTemplate对象
执行数据库操作

//1、创建数据源对象
ComboPooledDataSource dataSource= new ComboPooledDataSource();dataSource.setDriverClass("com.mysql.jdbc.Driver");dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");dataSource.setUser("root");dataSource.setPassword("root");//2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate();//3、设置数据源给JdbcTemplatejdbcTemplate.setDataSource(dataSource);//4、执行操作
jdbcTemplate.update("insert into account values(?,?)","tom",5000);

Spring产生JdbcTemplate对象

我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,配置如下:

<!--数据源DataSource--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///test"></property><property name="user" value="root"></property><property name="password" value="root"></property></bean><!--JdbcTemplate--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean>

从容器中获得JdbcTemplate进行添加操作

@Testpublic void testSpringJdbcTemplate() throws PropertyVetoException{ApplicationContext applicationContext= new 
ClassPathXmlApplicationContext("applicationContext.xml");JdbcTemplate jdbcTemplate= applicationContext.getBean(JdbcTemplate.class);jdbcTemplate.update("insert into account values(?,?)","lucy",5000);}

修改操作

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class JdbcTemplateCRUDTest {@Autowiredprivate JdbcTemplate jdbcTemplate;@Test//测试修改操作
public void testUpdate(){jdbcTemplate.update("update account set money=? where 
name=?",1000,"tom");}}

删除和查询全部操作

@Testpublic void testDelete(){jdbcTemplate.update("delete from account where name=?","tom");}@Testpublic void testQueryAll(){List<Account> accounts = jdbcTemplate.query("select * from account", new 
BeanPropertyRowMapper<Account>(Account.class));for (Account account : accounts) {System.out.println(account.getName());}}

查询单个数据操作操作

@Test//测试查询单个对象操作
public void testQueryOne(){Account account = jdbcTemplate.queryForObject("select * from account where 
name=?", new BeanPropertyRowMapper<Account>(Account.class), "tom");System.out.println(account.getName());}@Test//测试查询单个简单数据操作(聚合查询)public void testQueryCount(){Long aLong = jdbcTemplate.queryForObject("select count(*) from account", 
Long.class);System.out.println(aLong);}

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

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

相关文章

【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…

汇编指令学习

1 栈和过程调用 00000000 <swap>:0: 55 push %ebp1: 89 e5 mov %esp,%ebp3: 83 ec 10 sub $0x10,%esp6: 8b 45 08 mov 0x8(%ebp),%eax9: 8b 00 …

【Docker】实战:nginx、redis

▒ 目录 ▒ &#x1f6eb; 导读开发环境 1️⃣ Nginx 拉取 Nginx 镜像nginx.conf启动 Nginx访问 Nginx 2️⃣ redis拉取 Redis 镜像启动 Redis 容器测试 Redis &#x1f4d6; 参考资料 &#x1f6eb; 导读 开发环境 版本号描述文章日期2023-12-15操作系统Win10 - 22H222621.2…

【离线】牛客小白月赛39 G

登录—专业IT笔试面试备考平台_牛客网 题意 思路 考虑离线Bit做法 这种离线Bit&#xff0c;一般都是去考虑二维数点就能写清楚了 确定好两维&#xff1a;x 轴是1 ~ n&#xff0c; y 轴是 k 的大小 然后去遍历值域&#xff0c;如果值域很大的话需要排序离散化&#xff0c;但…

metagpt学习实践

metagpt 官方库目录 一级目录 tree -L 1 -I "__pycache__" . ├── actions ├── _compat.py ├── config.py ├── const.py ├── document_store ├── environment.py ├── __init__.py ├── inspect_module.py ├── learn ├── llm.py ├── …

Pydantic 中 validator 和 validators 的区别

前言 pydantic 是一个数据验证库&#xff0c;使用 Python 类型注解来验证输入或转换数据 开始 validator 是 pydantic 的一个装饰器&#xff0c;它用于在数据模型上创建自定义验证函数。这些验证函数会在 Pydantic 模型的字段被初始化时运行。例如&#xff1a; from pydant…

JVM类加载器的分类以及双亲委派机制

目录 前言 1. 类加载器的分类&#xff1a; 1.1 启动类加载器&#xff08;Bootstrap ClassLoader&#xff09;&#xff1a; 1.2 扩展类加载器&#xff08;Extension ClassLoader&#xff09;&#xff1a; 1.3 应用程序类加载器&#xff08;Application ClassLoader&#xff…

Linux第一个小程序——进度条

Linux第一个小程序——进度条 1. 前言2. 缓冲区概念3. \r && \n4. 进度条实现4.1 初级进度条4.2 升级进度条 1. 前言 在我们写这个小程序之前&#xff0c;我们要用到我们学的三个知识点 gcc的使用vim的使用make/makefile的使用 除此之外还需要一些其他的知识点&…

uniapp微信小程序下载base64图片流或https图片

常规https的图片下载是这样的 const urlPath https://test/logo.png uni.downloadFile({url: urlPath,success(res){// 这时会产生一个临时路径&#xff0c;在应用本次启动期间可以正常使用。if (res.statusCode 200) {// 需要将图片保存到相册uni.saveImageToPhotosAlbum({…

学习Django从零开始之三

搭建虚拟python环境 搭建开发环境有多种方式&#xff0c;其中包括本地直接安装Python的可执行文件&#xff0c;使用virtualenv&#xff0c;以及使用Anaconda和Miniconda等工具。这些工具在创建Python虚拟环境方面各有特点。具体不同之处感兴趣的同学可以自行查阅相关资料。 简…

2-go-变量定义、类型、常量、函数

1 变量定义 2 类型 3 常量 4 函数 1 变量定义 package mainimport "fmt"//注释 单行注释/* 多行注释 */ func main() {// 变量定义// 1 完整定义 var关键字 变量名 变量类型 变量值//var age int 19 // 变量定义了必须使用&#xff0c;不使用就报错//fmt.Prin…

锚定价值(现代诗)

一 已知苹果价值5元&#xff0c;香蕉价值6元。 用它们产生杂交水果&#xff0c;称为香果。 请问香果价值为多少&#xff1f; A. 11 B. 5.5 C. 5 D. 6 E. 30 F. 1000000 二 已知金奖苹果价值12元&#xff0c;银奖苹果价值9元。 请问铜奖苹果价值为多少&#xff1f; A. 6…

【Java后端】Tomcat(学习笔记)

一、Web服务器 1、Web服务器概述 服务器&#xff1a;装服务器软件的计算机 服务器软件&#xff1a;接收用户请求&#xff0c;处理请求&#xff0c;做出响应 2、常见的服务器软件 webLogicwebSphereJBOSSTomcatJavaEE&#xff1a;Java语言企业版开发的13个规范 二、tomcat…

IP代理如何影响网站的速度?代理ip服务器有哪些作用?

目录 前言 一、如何影响速度 二、代理服务器的作用 1. 隐藏真实IP地址 2. 绕过访问限制 3. 分布式访问 4. 数据缓存和加速 总结 前言 IP代理是一种通过在用户和目标网站之间引入代理服务器来访问目标网站的方式。代理服务器充当中间人&#xff0c;将用户的请求转发给目…

flyway快速入门基础教程

flyway快速入门 一、flyway是什么&#xff1f;二、flyway使用目的1. 使用原因&#xff1a;2. 举个例子&#xff1a; 三、flyway工作原理四、flyway使用约定和命名规则1. 数据库版本文件整体约定2. 数据库版本文件夹管理约定3. 数据库版本文件命名约定4. 禁止项 五、flyway配置和…

Lua 模仿C++类

Lua类的声明与定义 在文件中"AInfoClass.lua"声明并定义一个Lua类。 local AInfoClass {}function AInfoClass.New(id)local tempTab {}tempTab.id idsetmetatable(tempTab, {__index AInfoClass})tempTab:InitClass()return tempTab endfunction AInfoClass:I…

功能测试转向自动化测试 。10 年 心路历程——愿测试人不再迷茫

十年测试心路历程&#xff1a; 由于历史原因&#xff0c;大部分测试人员&#xff0c;最开始接触都是纯功能界面测试&#xff0c;随着工作年限&#xff0c;会接触到一些常用测试工具&#xff0c;比如抓包&#xff0c;数据库&#xff0c;linux 等。 我大学学的计算机专业&#…

Python自动化测试如何自动生成测试用例?

汽车软件开发自动化测试攻略 随着软件开发在造车行业中占有越来越重要的地位&#xff0c;敏捷开发的思想在造车领域中也逐渐地被重视起来&#xff0c;随之而来的是整车厂对自动化测试需求越来越强烈。本文结合北汇在自动化测试方面的丰富经验&#xff0c;简单介绍一下实施自动…

List当中的stream流使用

Java中的Stream流是一种用于处理集合数据的抽象概念。它可以让我们以一种类似于SQL查询的方式对集合进行操作&#xff0c;例如过滤、映射、排序、聚合等。Stream流可以让我们以更简洁的方式实现集合的处理和转换&#xff0c;同时也提供了更高效的并行处理能力。 对于List集合&…

密码管理器:方便与安全并存的选择

日常生活中使用各种应用程序时&#xff0c;密码安全问题是我们难以避免的。如果您也像我一样&#xff0c;经常忘记密码或混淆密码&#xff0c;就需要一款优秀的密码管理工具来帮助您解决这一问题。今天&#xff0c;我就来介绍一下密码管理器的功能和优势&#xff0c;看看它是如…