9.1JavaEE——Spring JDBC

一、JDBCTemplate概述

1、JDBCTemplate作用

        针对数据库操作,Spring框架提供了JdbcTemplate类,JdbcTemplate是一个模板类,Spring JDBC中的更高层次的抽象类均在JdbcTemplate模板类的基础上创建。 JdbcTemplate类提供了操作数据库的基本方法,包括添加、删除、查询和更新。在操作数据库时,JdbcTemplate类简化了传统JDBC中的复杂步骤,这可以让开发人员将更多精力投入到业务逻辑中。

2、抽象类JdbcAccessor的属性

        JdbcTemplate类继承自抽象类JdbcAccessor,同时实现了JdbcTemplate接口。抽象类JdbcAccessor提供了一些访问数据库时使用的公共属性,具体如下:

  • DataSource:DataSource主要功能是获取数据库连接。在具体的数据操作中,它还提供对数据库连接的缓冲池和分布式事务的支持。
  • SQLExceptionTranslator:SQLExceptionTranslator是一个接口,它负责对SQLException异常进行转译工作。

二、Spring JDBC的配置

1、Spring JDBC中的4个包说明 

包名说明
core(核心包)包含了JDBC的核心功能,包括JdbcTemplate类、SimpleJdbcInsert类、SimpleJdbcCall类以及NamedParameterJdbcTemplate类。
dataSource(数据源包)包含访问数据源的实用工具类,它有多种数据源的实现,可以在Java EE容器外部测试JDBC代码。
object(对象包)以面向对象的方式访问数据库,它可以执行查询、修改和更新操作并将返回结果作为业务对象,并且在数据表的列和业务对象的属性之间映射查询结果。
support(支持包)包含了core和object包的支持类,如提供异常转换功能的SQLException类。

        Spring对数据库的操作都封装在了core、dataSource、object和support这4个包中,想要使用Spring JDBC,就需要对这些包进行配置。

         在Spring中,JDBC的配置是在配置文件applicationContext.xml中完成的,包括配置数据源、配置JDBC模板和配置注入类。

<!-- 1.配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- 连接数据库url --><property name="url" value="jdbc:mysql://localhost:3306/spring"/><property name="username" value="root"/><!-- 连接数据库用户名 --><property name="password" value="root"/><!-- 连接数据库密码 -->
</bean>
<!-- 2.配置JDBC模板 -->
<bean id="JdbcTemplate"   class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/>
</bean>
<!-- 3.配置注入类 -->
<bean id="xxx" class="Xxx">	<property name="JdbcTemplate" ref="JdbcTemplate"/></bean>

2、dataSource配置4个属性的含义

属性名含义
driverClassName所使用的驱动名称,对应驱动JAR包中的Driver类
url数据源地址
username访问数据库的用户名
password访问数据库的密码

3、dataSource属性值的设定要求

        在dataSource的4个属性中,需要根据数据库类型或者系统配置设置相应的属性值。例如,如果数据库类型不同,需要更改驱动名称;如果数据库不在本地,则需要将地址中的localhost替换成相应的主机IP;默认情况下,数据库端口号可以省略,但如果修改过MySQL数据库的端口号,则需要加上修改后的端口号。此外,连接数据库的用户名和密码需要与数据库创建时设置的用户名和密码保持一致。

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

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

相关文章

计算机视觉与深度学习实战,Python工具,深度学习的视觉场景识别

一、引言 随着人工智能技术的快速发展,计算机视觉和深度学习已成为当今最热门的研究领域之一。在计算机视觉中,视觉场景识别是一项重要的任务,旨在通过计算机对图像或视频中的场景进行自动分类和理解。Python作为一种强大的编程语言,结合深度学习框架,为计算机视觉领域的研…

关于工作组

什么是局域网&#xff08;内网&#xff09; 我们常说的内网指的就是局域网&#xff0c;局域网&#xff08;Local Area Network&#xff0c;简称LAN&#xff09;是指在相对较小的地理范围内&#xff0c;如一个办公室、学校、住宅区或建筑群内部&#xff0c;通过通信设备&#xf…

STL的pair知识点大全

1&#xff1a;set容器set.equal range(elem) 1.上限是闭区间&#xff0c;下限是开区间&#xff0c;如[beg,end)返回容器中与elem相等的上下限的两个迭代器&#xff0c;pair中。函数返回两个迭代器&#xff0c;而这两个迭代器被封装在pair中。 pair< set<int>::iterat…

如何快速入门使用Vue.js

目录 学习步骤具体案例案例一&#xff1a;Todo List 应用案例二&#xff1a;用户管理系统 学习步骤 基础知识&#xff1a; HTML/CSS/JavaScript&#xff1a;掌握基本的网页结构、样式和交互是必须的。ES6&#xff1a;了解现代JavaScript的特性&#xff0c;如箭头函数、解构赋值…

vue3 diff源码梳理学习笔记

1、只比较同层 2、双端比较 3、判断流程 1、先判断是否是首次渲染&#xff1b; 2、vnode oldvnode 指向同一个对象&#xff1f; 3、oldvnode dom 关联到真实的元素上&#xff0c;依次更新dom上的属性&#xff0c;class style props events; 4、针对简单的文本节点 只需要更新…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很早之前&#xff0c;个人对tf卡并不是很重视&#xff0c;觉得它就是一个存储工具而已。后来在移植v3s芯片的时候&#xff0c;才发现很多的soc其实…

如何监控慢 SQL?

引言&#xff1a;在开发和维护数据库驱动的应用程序时&#xff0c;监控慢 SQL 查询是确保系统性能和稳定性的关键一环。慢 SQL 查询可能会导致系统性能下降、资源浪费和用户体验差等问题。因此&#xff0c;及时监控和优化慢 SQL 查询对于保障系统的正常运行和用户满意度至关重要…

k8s 1.28.x 配置nfs

1.安装nfs&#xff0c;在每个节点上安装 yum install -y nfs-utils 2.创建共享目录(主节点上操作) mkdir -p /opt/nfs/k8s 3.编写NFS的共享配置 /opt/nfs/k8s *(rw,no_root_squash) #*代表对所有IP都开放此目录&#xff0c;rw是读写 4.启动nfs systemctl enable nfs-ser…

动态代理(黑马笔记)

一、BigStar 大明星类 package com.itheima.mydynamicproxy1; public class BigStar implements Star {//实现接口要重写里边的抽象方法private String name;public BigStar() {}public BigStar(String name) {this.name name;}//唱歌Override //表示重写接口中的方法public…

Java面试题:解释一下Java中的synchronized关键字,它是如何保证线程安全的?

在Java中&#xff0c;synchronized关键字是一种同步锁机制&#xff0c;用于确保多个线程在访问共享资源时能够保持线程安全。线程安全是指在多线程环境下&#xff0c;当多个线程尝试同时访问共享资源时&#xff0c;任何时刻最多只有一个线程能够执行特定的代码段。 synchroniz…

【Python】探索 SHAP 特征贡献度:解释机器学习模型的利器

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 什么是 SHA…

Java | Leetcode Java题解之第127题单词接龙

题目&#xff1a; 题解&#xff1a; class Solution {Map<String, Integer> wordId new HashMap<String, Integer>();List<List<Integer>> edge new ArrayList<List<Integer>>();int nodeNum 0;public int ladderLength(String beginW…

TypeScript 项目,自身 package 是 A,它引用了 B package。项目编译时,选择依赖版本的机制是什么?

在 TypeScript 项目中&#xff0c;当 package A 引用了 package B&#xff0c;编译 A 的过程中&#xff0c;B package 将按照 B package 自身的 package.json 文件中指定的各个库的版本进行编译&#xff0c;而不是按照 A package 中的库版本。 每个 package 都有自己的依赖项和…

随心笔记,第四更

目录 Windows环境 rabbitmq 1. 安装 RabbitMQ 和 Erlang 1.1、下载和安装 Erlang 1.2、下载和安装 RabbitMQ 2. 安装 RabbitMQ 服务 2.1、打开命令提示符 2.2、注册 RabbitMQ 服务 3. 配置 RabbitMQ 服务自启动 3.1、打开服务管理器 3.2、设置 RabbitMQ 服务为自动启…

算法-找出N个数组的共同元素

一、代码与执行结果 财经新闻是大众了解金融事件的重要渠道&#xff0c;现有N位编辑&#xff0c;分别对K篇新闻进行专业的编辑与排版。需要您找出被这N位编辑共同编辑过的新闻&#xff0c;并根据这些新闻ID升序排列返回一个数组。 import random# 查找编辑共同处理的新闻id def…

RunLoop小白入门

核心概念 什么是 RunLoop ? RunLoop 是 iOS 和 macOS 应用程序框架中的一个核心概念&#xff0c;用于管理线程的事件处理。它可以看作是一个循环&#xff0c;用于持续接收和处理各种事件&#xff0c;如用户输入、定时器、网络事件等。RunLoop 在保持应用程序响应用户交互和系…

系统与软件工程软件测试过程

系统与软件工程 软件测试 测试过程 &#xff1b;对应的国标是GB/T 38634.4 2020 &#xff0c;该标准的范围规定适应用于治理、管理和实施任何组织,项目或较小规模测试活动的软件测试的测试过程,定义了软件测试通用过程,给出了描述过程的支持信息图表。 一 术语和定义 1.1实测…

宏基础使用实践

文章目录 1.宏变量2.条件宏 1.宏变量 2.条件宏 #include <iostream> #define aa 30 #define version 2using namespace std;/** 1.宏变量* 2.条件宏* */int main() {cout << aa << endl;#if version > 1cout<< "升级版本"<<endl;…

力扣173题:二叉搜索树迭代器(含模拟面试)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业…

Luminus推出新型高性能 UV-A LED

​Luminus Devices推出的SST-08H-UV&#xff0c;作为SST-08-UV的升级版&#xff0c;以其独特的高功率UV-A LED系列&#xff0c;犹如一道璀璨的光束&#xff0c;照亮了众多领域。这款LED的卓越之处在于&#xff0c;它巧妙地利用了365nm、385nm、395nm和405nm的峰值波长选项&…