Spring JDBC框架

简介:

数据库使用普通的JDBC的连接的话,使用比较繁琐,需要写不必要的代码来处理异常,打开和关闭数据库连接等,但是使用Spring的JDBC框架的话,所有低层次细节从打开连接,准备和执行SQL语句,过程异常,处理事务,最后关闭连接等都会变得简单。

你所要做的只是定义连接参数,并指定要执行的SQL语句,并做必要的工作,在每次迭代时从数据库中获取数据。

Spring JDBC提供了一些方法和相应不同的类与数据库进行交互。我要采取经典和最流行的做法,利用JdbcTemplateclass框架。这是管理的所有数据库的通信和异常处理中心框架类。

JdbcTemplate 类

JdbcTemplate类执行SQL查询,更新语句和存储过程调用,在结果集和提取返回参数值进行迭代。它还捕捉JDBC的异常并将其转换为通用的,信息更丰富,除了在org.springframework.dao包中定义的层次结构。

JdbcTemplate类的实例是一次配置的线程。所以,你可以配置一个JdbcTemplate的一个实例,然后安全地注入这种共享引用到多个DAO。

使用JdbcTemplate类时,通常的做法是配置一个DataSource在Spring配置文件,然后依赖关系注入该共享数据源豆到DAO类,JdbcTemplate或者是在setter数据源创建。

配置数据源

让我们一起创造数据库test数据库表的 student 。假设使用MySQL数据库,如果使用其他数据库,那么可以相应地改变你的DDL和SQL查询。

 CREATE TABLE Student( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID) );

现在,我们需要提供一个数据源给JdbcTemplate类,因此它可以自行配置,以获得数据库访问。您可以配置数据源的XML文件中有一段代码,如下图所示:

 
<bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
<property name = "url" value = "jdbc:mysql://localhost:3306/TEST" />
<property name = "username" value = "root" />
<property name = "password" value = "password" />
</bean>

数据访问对象 (DAO)

DAO表示这是通常用于数据库交互的数据访问对象。 DAO的存在是为了提供读取和写入数据到数据库中,他们应该通过该应用程序的其余部分将访问它们的接口公开此功能的一种手段。

在Spring的数据访问对象(DAO)的支持使得它很容易与如JDBC,Hibernate,JPA和JDO以一致的方式进行数据访问技术。

执行SQL语句

让我们来看看如何使用SQL和的JdbcTemplate对象数据库中的表执行CRUD(创建,读取,更新和删除)操作。

查询一个整数:

 
String SQL = "select count(*) from Student" ;
int rowCount = jdbcTemplateObject . queryForInt ( SQL );

查询长整数:

 
String SQL = "select count(*) from Student" ;
long rowCount = jdbcTemplateObject . queryForLong ( SQL );

使用绑定变量的简单查询:

 
String SQL = "select age from Student where id = ?" ;
int age = jdbcTemplateObject . queryForInt ( SQL , new Object []{ 10 });

在查询字符串:

 
String SQL = "select name from Student where id = ?" ;
String name = jdbcTemplateObject . queryForObject ( SQL , new Object []{ 10 }, String . class );

查询并返回一个对象:

 
String SQL = "select * from Student where id = ?" ;
Student student = jdbcTemplateObject . queryForObject ( SQL , new Object []{ 10 }, new StudentMapper ()); public class StudentMapper implements RowMapper < Student > { public Student mapRow ( ResultSet rs , int rowNum ) throws SQLException { Student student = new Student (); student . setID ( rs . getInt ( "id" )); student . setName ( rs . getString ( "name" )); student . setAge ( rs . getInt ( "age" )); return student ; } }

查询并返回多个对象:

 
String SQL = "select * from Student" ;
List < Student > students = jdbcTemplateObject . query ( SQL , new StudentMapper ()); public class StudentMapper implements RowMapper < Student > { public Student mapRow ( ResultSet rs , int rowNum ) throws SQLException { Student student = new Student (); student . setID ( rs . getInt ( "id" )); student . setName ( rs . getString ( "name" )); student . setAge ( rs . getInt ( "age" )); return student ; } }

插入一行到表:

 
String SQL = "insert into Student (name, age) values (?, ?)" ;
jdbcTemplateObject . update ( SQL , new Object []{ "Zara" , 11 } );

更新一行到表:

 
String SQL = "update Student set name = ? where id = ?" ;
jdbcTemplateObject . update ( SQL , new Object []{ "Zara" , 10 } );

从表中删除行:

 
String SQL = "delete Student where id = ?" ;
jdbcTemplateObject . update ( SQL , new Object []{ 20 } );

执行DDL语句

您可以使用execute(…)方法的JdbcTemplate来执行任何SQL语句或DDL语句。下面是一个示例使用CREATE语句创建一个表:

String SQL = "CREATE TABLE Student( " + "ID INT NOT NULL AUTO_INCREME


原文发布时间为:2018-10-28

本文来自云栖社区合作伙伴“Java杂记”,了解相关信息可以关注“Java杂记”。

相关文章
|
5天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
22 0
|
14天前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
26 1
|
1月前
|
开发框架 安全 Java
Spring 框架:企业级应用开发的强大工具
在当今数字化时代,企业级应用开发的需求日益增长。为了满足这一需求,开发者们需要一款功能强大、易于使用的开发框架。Spring 框架作为 Java 领域的领先者,为企业级应用开发提供了全面的解决方案。本文将深入探讨 Spring 框架的各个方面,包括其历史、核心模块、优势以及应用场景。
23 0
|
1月前
|
存储 Java 数据库
|
1月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
3月前
|
XML Java 数据库连接
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
67 0
|
2月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
3月前
|
Java 数据库连接 Maven
SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!
SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!
|
3月前
|
Java 数据库 数据安全/隐私保护
基于SSM框架实现管科类考研自我管理系统(分前后台spring+springmvc+mybatis+maven+jsp+jquery)
基于SSM框架实现管科类考研自我管理系统(分前后台spring+springmvc+mybatis+maven+jsp+jquery)
|
1月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
46 0