通过 Spring 框架如何进行JDBC操作呢?
哈喽!今天心血来潮给大家带来了《通过 Spring 框架如何进行JDBC操作呢?》,想必大家应该对数据库都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到MySQL、算法、Java、Linux、程序员,若是你正在学习数据库,千万别错过这篇文章~希望能帮助到你!
通过 Spring 框架如何进行JDBC操作呢?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUiCZnSc-1600675300070)(https://imgkr.cn-bj.ufileos.c...]
Spring 整合 JDBC 的方式
- 添加依赖
- 编写配置文件 db.properties
- bean.xml 配置修改
- 配置数据源
- 模板类配置
- 测试整合结果
案例实操
添加依赖
数据库驱动 jar 包
mysql-connector-java-5.1.25-bin.jar
数据库连接池相关 jar 包
c3p0-0.9.5.2.jar、mchange-commons-java-0.2.11.jar
Spring jdbc 相关 jar
spring-jdbc-4.3.2.RELEASE.jar、spring-tx-4.3.2.RELEASE.jar
<!-- spring 框架坐标依赖添加 --> <dependency><groupid>org.springframework</groupid><artifactid>spring-context</artifactid><version>4.3.2.RELEASE</version></dependency><!-- aop --><dependency><groupid>org.aspectj</groupid><artifactid>aspectjweaver</artifactid><version>1.8.9</version></dependency><!-- mysql 驱动包 --><dependency><groupid>mysql</groupid><artifactid>mysql-connector-java</artifactid><version>5.1.39</version></dependency><!-- c3p0 连接池 --><dependency><groupid>c3p0</groupid><artifactid>c3p0</artifactid><version>0.9.1.2</version></dependency><!-- spring jdbc --><dependency><groupid>org.springframework</groupid><artifactid>spring-jdbc</artifactid><version>4.3.2.RELEASE</version></dependency><!-- springs事务 --><dependency><groupid>org.springframework</groupid><artifactid>spring-tx</artifactid><version>4.3.2.RELEASE</version></dependency>
配置文件db.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring_jdbc?useUnicode=true&characterEncod ing=utf8 jdbc.user=root jdbc.password=root mysql8版本以上 jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/user?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true jdbc.user=root jdbc.password=root
以下为可选配置
initialPoolSize=20 maxPoolSize=100 minPoolSize=10 maxIdleTime=600 acquireIncrement=5 maxStatements=5 idleConnectionTestPeriod=60
bean.xml 配置修改
加载 properties 文件配置
<!-- 加载 properties 配置文件 --> <property-placeholder location="db.properties"></property-placeholder>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"><!-- 加载properties 配置文件 --><property-placeholder location="db.properties"></property-placeholder><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean></beans>
配置数据源
由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先 同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连 接池中申请一个就行,用完后再放回去。
C3P0 与 dbcp 二选一即可
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用 dbcp 需要 2 个包:commons-dbcp.jar,commons-pool.jar dbcp,没有自动回收空闲连接的功能.
C3P0 是一个开源的 JDBC 连接池,它实现了数据源,支持 JDBC3 规范和 JDBC2 的标准扩展。目前使用它的开源项目有 Hibernate,Spring 等。c3p0 有自动回收空闲连接功能
C3P0 数据源配置
<!-- 配置 c3p0 数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${driver}"></property><property name="jdbcUrl" value="${url}"></property><property name="user" value="${user}"></property><property name="password" value="${password}"></property></bean>
C3P0 其他额外配置(对应的值在 db.properties 文件中指定)
<!-- 指定连接池中保留的最大连接数. Default:15--> <property name="maxPoolSize" value="${maxPoolSize}"></property><!-- 指定连接池中保留的最小连接数--><property name="minPoolSize" value="${minPoolSize}"></property><!-- 指定连接池的初始化连接数 取值应在 minPoolSize 与 maxPoolSize 之 间.Default:3--><property name="initialPoolSize" value="${initialPoolSize}"></property><!-- 最大空闲时间,60 秒内未使用则连接被丢弃。若为 0 则永不丢弃。 Default:0--><property name="maxIdleTime" value="${maxIdleTime}"></property><!-- 当连接池中的连接耗尽的时候 c3p0 一次同时获取的连接数. Default:3--><property name="acquireIncrement" value="${acquireIncrement}"></property><!-- JDBC 的标准,用以控制数据源内加载的 PreparedStatements 数量。 但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要 考虑到多方面的因数.如果 maxStatements 与 maxStatementsPerConnection 均为 0,则缓存 被关闭。Default:0--><property name="maxStatements" value="${maxStatements}"></property><!-- 每 60 秒检查所有连接池中的空闲连接.Default:0 --><property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}"></property>
对于 dbcp 数据源配置如下:
<!-- 配置 dbcp 数据源--> <bean id="myDataSource" class="org.apache.commons.dbcp2.BasicDataSource"><property name="driverClassName" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${user}"></property><property name="password" value="${password}"></property><!-- 连接池启动时的初始值 --><property name="initialSize" value="1"></property><!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到 maxIdle 为止 --><property name="maxIdle" value="2"></property><!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请一些连接,以避免洪峰来时再申请而造成的性能开销 --><property name="minIdle" value="1"></property></bean>
模板类配置
Spring 把 JDBC 中重复的操作建立成了一个模板类:org.springframework.jdbc.core.JdbcTemplate ,配置文件中加入
<!-- jdbcTemplate 配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean>
测试整合结果
通过 junit 测试 jdbcTemplate bean 是否获取到
public class TestSpringJdbc { private JdbcTemplate jdbcTemplate; @Before public void init(){ ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml"); jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate"); } @Test public void test() { String sql="select count(1) from account"; Integer total= jdbcTemplate.queryForObject(sql, Integer.class); System.out.println("总计路数:"+total); } }
扩展
JDBC 事务
如果应用程序中直接使用 JDBC 来进行持久化,此时使用 DataSourceTransactionManager 来处理事务边界。为了使用 DataSourceTransactionManager,需要使用如下的 XML 将其装配到应用程序的上下文定义中:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>
界。为了使用 DataSourceTransactionManager,需要使用如下的 XML 将其装配到应用程序的上下文定义中:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>
实际上,DataSourceTransactionManager 是通过调用 java.sql.Connection 来管理事务, 而后者是通过 DataSource 获取到的。通过调用连接的 commit()方法来提交事务,同样,事务失败则通过调用 rollback()方法进行回滚。
以上就是《通过 Spring 框架如何进行JDBC操作呢?》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

- 上一篇
- 2147483647 一个神奇的数字

- 下一篇
- mysql的sql_mode值及说明
-
- 炙热的自行车
- 这篇文章真及时,太详细了,感谢大佬分享,码起来,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-02-19 22:56:32
-
- 专注的大碗
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢老哥分享文章内容!
- 2023-02-08 18:53:05
-
- 生动的荷花
- 很详细,已加入收藏夹了,感谢老哥的这篇文章内容,我会继续支持!
- 2023-02-03 14:31:26
-
- 数据库 · MySQL | 1天前 |
- MySQL设置中文界面,超简单教程来了!
- 332浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql 索引提示
- MySQL进阶必看!FORCE/USE/IGNOREINDEX用法大揭秘
- 182浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- 手把手教你写MySQL存储过程,小白也能轻松上手
- 163浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql group by
- MySQL分组查询优化:GROUPBY原理+索引优化超全解析
- 324浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL设置中文语言,轻松拥有中文界面
- 211浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL建库语句从入门到精通:创建数据库+设置字符集&排序规则(附实例)
- 176浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- 从零开始学MySQL数据库操作,小白轻松变大神!
- 496浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL插入日期到时间字段,轻松搞定日期格式
- 484浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql 数据压缩
- MySQL怎么实现高效压缩存储?表压缩+列式存储详细解读
- 272浏览 收藏
-
- 数据库 · MySQL | 1天前 | mysql JOIN优化
- MySQL优化JOIN操作:七大技巧教你提升关联查询速度
- 106浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL出现中文乱码?超详细解决方案一次性搞定
- 211浏览 收藏
-
- 数据库 · MySQL | 1天前 |
- MySQL主从复制这样配!搞懂这些参数,replication稳了~
- 131浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 茅茅虫AIGC检测
- 茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
- 14次使用
-
- 赛林匹克平台(Challympics)
- 探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
- 48次使用
-
- 笔格AIPPT
- SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
- 56次使用
-
- 稿定PPT
- 告别PPT制作难题!稿定PPT提供海量模板、AI智能生成、在线协作,助您轻松制作专业演示文稿。职场办公、教育学习、企业服务全覆盖,降本增效,释放创意!
- 51次使用
-
- Suno苏诺中文版
- 探索Suno苏诺中文版,一款颠覆传统音乐创作的AI平台。无需专业技能,轻松创作个性化音乐。智能词曲生成、风格迁移、海量音效,释放您的音乐灵感!
- 56次使用
-
- golang MySQL实现对数据库表存储获取操作示例
- 2022-12-22 499浏览
-
- goHTTP2的头部压缩算法hpack实现详解
- 2022-12-22 398浏览
-
- 搞一个自娱自乐的博客(二) 架构搭建
- 2023-02-16 244浏览
-
- B-Tree、B+Tree以及B-link Tree
- 2023-01-19 235浏览
-
- go语言算法题解二叉树的最小深度
- 2022-12-22 327浏览