Spring使用JDBC访问MySQL数据库
在Java应用程序开发中,使用JDBC访问MySQL数据库是Java开发者常用的技术。在Spring框架中,Spring对JDBC又进行了封装,简化了程序访问数据库的复杂度。本课主要讨论在Spring框架中如何使用封装的JDBC访问MySQL数据库。通过本课的学习,可以解决如下问题。
● 在Spring框架下,如何让程序连接数据库?
● 如何利用DAO技术从数据源读取和写入数据?
企业级应用开发都会涉及到对数据库的访问,在Java编程环境中,访问数据库是非常繁琐的事情,需要编写启动数据库连接、准备和执行SQL语句、处理事务和异常、关闭连接等大量数据库操作代码。
使用Spring框架可以简化Java程序对数据库的访问,Spring提供了一套完整的数据库访问框架,用于简化各种数据库访问技术的使用。Spring框架支持JDBC、Hibernate、Java Perssitence等数据库访问技术,本文主要讨论JDBC数据库访问技术。
1、 配置数据源
要让Spring能够访问数据库,就要把数据库的位置,以及访问数据库的账号和密码告诉Spring。这个过程称为配置数据源。Spring提供了多种方式配置数据源,下面主要讨论基于JDBC驱动方式配置数据源。
Spring提供的JDBC驱动提供了三类数据源的配置方式,开发者可以根据程序需要选择不同的配置方式,配置方式及其配置说明如下表所示。
表1 JDBC驱动配置数据源方式
本课主要使用DriverManagerDataSource连接数据源,没有使用连接池技术。后面的课程会讨论数据库连接池技术。
数据源可以在Spring配置文件中进行配置,配置代码如下。
2、创建数据访问对象(DAO)
数据访问对象(DAO)相当于程序和数据源之间的经纪人。程序要访问数据源,必须要通过DAO来访问,DAO提供了程序访问数据源必要的接口和方法,接口和方法的具体实现细节,程序并不需要了解。
DAO由数据访问对象接口、数据访问对象实现类、访问对象实体类组成。其中,数据访问对象接口定义了访问数据必要的接口声明;数据访问对象实现类实现了定义的接口,并负责从数据源读取数据,数据源可以是数据库、XML文件或者是其它存储对象;访问对象实体类定义了要访问的对象结构,假设要访问的数据对象是数据库,则该实体类定义了数据库中一个表的结构。下面以访问数据库为例,分别讨论数据访问对象接口、数据访问对象实现类和访问对象实体类。
(1)数据访问对象接口
访问数据库的操作一般是增、删、改、查。增是在指定的数据库表中插入一条记录;删是在指定的数据库表中删除一条记录;改是在指定的数据库表中修改记录;查是按指定条件查询数据库表记录。数据访问对象接口就是定义操作数据库表的增删改查接口。下面给出课程案例mooc数据库course表的DAO接口。
课程案例mooc数据库ER图如下所示。
图 1 mooc数据库ER图
mooc数据库course表结构如下。
表 2 课程表
course表DAO接口代码如下。
(2)数据访问对象实现类
数据访问对象实现类实现DAO接口,并负责从mooc数据库中读取数据。在Spring中,可以采用JDBC、Hibernate、MyBits、JPA等技术在DAO层实现对数据库的访问。本科采用JDBC技术,JdbcTemplate类是Spring对JDBC的封装,让JDBC更加容易使用,JdbcTemplate 类可以执行 标准的SQL 语句和过程调用。数据访问对象实现类代码如下。
CourseJDBCTemplate类实现了CourseDao接口,并实现了接口的所有方法。CourseJDBCTemplate类内置了DataSource和JdbcTemplate类。DataSource为数据源类,存储了数据源的连接地址、登录数据源的账号密码等数据。JdbcTemplate类是Spring对JDBC的封装,JdbcTemplate 类可以执行 标准的SQL 语句和过程调用,创建JdbcTemplate类时传入的参数为DataSource。
代码中用到了JdbcTemplate类的queryForObject方法,该方法从数据库中查询符合条件的记录。queryForObject方法的第三个参数是RowMapper泛型类型,通过继承RowMapper泛型,可以将查询返回的ResultSet数据集映射到访问对象实体类。
(3)访问对象实体类
访问对象实体类定义了要访问的对象结构,假设要访问的数据对象是数据库,则该实体类定义了数据库中一个表的结构。mooc数据库course表的实体类代码如下。
3、运行JDBC的测试程序
前面主要讨论了配置数据源和创建数据访问对象(DAO)相关内容,解决了程序如何访问数据库以及数据库表的读写问题。下面给出一个程序实例,利用前面配置的数据源和已创建的DAO对象,实现对mooc数据库course表的课程插入和查询操作。
mooc数据库非常简单,可以根据课程给出的ER图和course二维表,手动创建mooc数据库和course表。mooc数据库创建完成后,需要修改Spring配置文件中配置的数据源,主要是修改数据库的连接地址、登录账户和密码。
运行程序前需要确定项目已经引入了Spring框架关于JDBC功能的jar包。下面列出的是spring 5.0版本相关JDBC的jar包。
● mysql-connector-java-5.1.7-bin
● spring-jdbc-5.0.8.RELEASE
测试程序代码如下。
程序运行结果如下图示所示。
课程小结
(1)要让Spring能够访问数据库,就要把数据库的位置,以及访问数据库的账号和密码告诉Spring,这个过程称为配置数据源。数据源可以在Spring配置文件中进行配置,也可以写成Bean的方式,由DAO对象读取。
(2)数据访问对象(DAO)相当于程序和数据源之间的经纪人。程序要访问数据源,必须要通过DAO来访问,DAO提供了程序访问数据源必要的接口和方法,接口和方法的具体实现细节,程序并不需要了解。DAO将底层数据操作细节和上层应用进行了有效隔离,在程序开发过程中,DAO和上层应用都可以独立编写代码,然后再进行集成就可以了,利用DAO层也可以轻松实现不同数据库的访问。
Spring使用JDBC访问MySQL数据库相关推荐
- SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...
- springdata和mysql_Spring Boot使用Spring Data JPA访问MySQL数据库
它使用Spring Data JPA来访问数据库,但这只是众多可能选择中的一种(例如,您可以使用普通的Spring JDBC). mysql建立数据库,添加用户,并且授权 mysql> crea ...
- php访问mysql数据库实验报告,php访问mysql数据库
//建一个连接,造一个连接对象 $db = new MySQLi("localhost","root","123","mydb&q ...
- JDBC连接MySQL数据库,访问数据库信息完成登录功能——保姆级详细教程(附所有java和jsp源代码)
目录 前言 JDBC的介绍 通过JDBC连接MySQL数据库 导入mysql驱动 连接数据库 连接数据库 判断连接是否成功 使用数据库实现登录 获取前端表单的用户输入 判断用户名和密码为空 查询表 判 ...
- Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...
- Springboot03整合SpringDataJPA访问MySQL数据库
使用SpringBoot访问MySQL数据库,并且结合SpringDataJPA完成CRUD(Create,Read,Update,Delete 结合 Springboot01 中的demo案例 Sp ...
- Spring Security:基于MySQL数据库的身份认证
本文来说下Spring Security:基于MySQL数据库的身份认证和角色授权 .本文为了上手简单,只用了一张user表. 文章目录 概述 创建项目 基于数据库的身份认证 本文小结 概述 需求缘起 ...
- jpa mysql_Spring boot通过JPA访问MySQL数据库
本文展示如何通过JPA访问MySQL数据库. JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据 ...
- Springboot学习1——通过JPA访问MySQL数据库
本文展示如何通过JPA访问MySQL数据库. JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据 ...
最新文章
- 不通过AppStore,在iOS设备上直接安装应用程序的原理
- Linux里su报错bash不是目录,Linux基础:关于su 命令的的几个相关报错
- OpenVZ,Xen,KVM等:虚拟化解决方案
- MyBatis3源码解析(1)探索准备
- php vm_facebook hiphop php vm 兑现概述(二)
- windows10开启Webdav文件服务
- OpenGL ES 送显 YUV NV12
- java 路径规划_应用内路径规划的简单实现
- java+毕业设计+进销存管理系统+源码+论文.rar
- 学习笔记【机器翻译评测指标】
- 征服面试官的50道Redis高频通关面试题
- css_radius-corner语法分析
- COMFORT 尊驾 | 内外兼修 全面进化
- js基础1 输入输出方式 数据类型
- 数码相机里的相片可以利用计算机,把数码相机里的照片上传到电脑上的方法
- Babylon.js 入门 - 第 6 章 - 构建粒子喷泉
- Pandas第三部分Day5练习题
- DAVINCI DM3730开发攻略——DVSDK4_03和双核CODEC机制介绍
- @font-face的format属性解释
- 编译原理 yacc lex 制作一个计算器