通过 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 一个神奇的数字
- 上一篇
- 2147483647 一个神奇的数字
- 下一篇
- mysql的sql_mode值及说明
-
- 数据库 · MySQL | 1天前 |
- MySQL数值函数大全及使用技巧
- 117浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- 三种登录MySQL方法详解
- 411浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 420浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 264浏览 收藏
-
- 数据库 · MySQL | 4天前 |
- MySQL索引的作用是什么?
- 266浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- MySQL排序原理与实战应用
- 392浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQLwhere条件查询技巧
- 333浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用数据类型有哪些?怎么选更合适?
- 234浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用命令大全管理员必学30条
- 448浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL高效批量插入数据方法大全
- 416浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL性能优化技巧大全
- 225浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL数据备份4种方法保障安全
- 145浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3167次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3380次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3409次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4513次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3789次使用
-
- 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浏览

