以下内容引用自http://wiki.jikexueyuan.com/project/spring/jdbc-framework.html

在使用普通的JDBC操作数据库时,就会很麻烦的写很多不必要的代码来处理异常,比如打开和关闭数据库连接等。但Spring JDBC框架负责所有的低层细节,从开始打开连接,准备和执行SQL语句,处理异常,处理事务,到最后关闭连接。

所以当从数据库中获取数据时,你所做的是定义连接参数,指定要执行的SQL语句,每次迭代完成所需的工作。

Spring JDBC提供了几种方法和相应的不同类与数据库的接口。我将要采用JdbcTemplate类的框架,它使用了最经典和最流行的方法。这是管理所有数据库通信和异常处理的中心框架类。

JdbcTemplate类

JDBC模板类执行SQL查询,更新语句,存储过程调用,在ResultSet上执行迭代,并提取返回的参数值。它还捕获JDBC异常,并将它们转换为org.springframework.dao包中定义的通用,更详细的异常层次结构。

配置JdbcTemplate类的实例是线程安全的。因此,您可以配置JdbcTemplate的单个实例,然后将该共享引用安全地注入到多个DAO中。

使用JDBC模板类时的常见做法是在Spring配置文件中配置DataSource,然后将共享DataSource bean的dependency-inject注入到DAO类中,并在DataSource的setter中创建JdbcTemplate。

配置数据源

使用MySql数据库在TEST数据库总创建Student表,脚本如下:

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

现在我们需要向JDBC模板提供一个DataSource,因此它可以配置自己以获取数据库访问。可以使用一段代码在XML文件中配置DataSource,如下所示:

<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和JDBC Template对象对数据库表执行CRUD(创建,读取,更新和删除)操作。

查询int类型

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

查询long类型

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语句

可以使用jdbcTemplate中的execute(...)方法来执行任何SQL语句或DDL语句。以下是使用CREATE语句创建表的示例:

String SQL = "CREATE TABLE Student( " +
"ID INT NOT NULL AUTO_INCREMENT, " +
"NAME VARCHAR(20) NOT NULL, " +
"AGE INT NOT NULL, " +
"PRIMARY KEY (ID));" jdbcTemplateObject.execute( SQL );

Spring的JDBC框架概述的更多相关文章

  1. Spring的JDBC框架

    转自: http://www.cnblogs.com/windlaughing/p/3287750.html Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要 ...

  2. 11.Spring——JDBC框架

    1.DBC 框架概述 2.Spring JDBC 示例 3.Spring 中 SQL 的存储过程 1.DBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关 ...

  3. Spring(十二)之JDBC框架

    JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...

  4. Spring JDBC 框架使用JdbcTemplate 类的一个实例

    JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...

  5. Sping-Spring JDBC框架

    JDBC框架概述 在使用普通的JDBC数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但Spring JDBC框架负责所有的底层细节,从开始打开连接,准备和执行SQL语句,处理 ...

  6. Spring Jdbc 框架整合的第一天

    Spring  Jdbc的概述 它是Spring框架的持久层子框架.用于对数据库的操作 什么是数据库的操作? 答:对数据库的增删改查 在使用Spring  Jdbc框架,要用到一个类---->J ...

  7. Spring框架学习笔记(9)——Spring对JDBC的支持

    一.使用JdbcTemplate和JdbcDaoSupport 1.配置并连接数据库 ①创建项目并添加jar包,要比之前Spring项目多添加两个jar包c3p0-0.9.1.2.jar和mysql- ...

  8. ref:Spring JDBC框架

    ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...

  9. jdbc框架有很多,包括spring jdbc

    1.由于jdbc连接的繁琐性,故很多公司封装了jdbc框架,比如spring jdbc 2.比如spring jdbc框架中,用jdbctemplate, 通过jdbcTemplate 提供 int ...

随机推荐

  1. Docker下redis的主从配置

    1.拉取redis镜像docker pull redis2.启动3个redis容器服务,分别使用到6379.6380.6381端口docker run --name redis-6379 -p 637 ...

  2. liunx中安装软件的几种方式

    服务器安装包一般有四种方式 1.源代码包安装 自由度高  需要预编译,安装速度慢    2.rpm包手动安装   安装的缺点是文件的关联性太大 3. 二进制tar.gz格式 直接解压即可 如tomca ...

  3. AspNetCore容器化(Docker)部署(一) —— 入门

    一.docker注册安装 Windows Docker Desktop https://www.docker.com/products/docker-desktop Linux Docker CE h ...

  4. 一丶webservice执行存储过程

    返回值组合: json返回 StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("\&qu ...

  5. minGW64编译Qt

    1.安装minGW64,设置bin目录到环境变量Path 2.cmd 到qt的Src目录 3.configure -debug-and-release -opensource -prefix &quo ...

  6. [LUOGU] P3611 [USACO17JAN]Cow Dance Show奶牛舞蹈

    https://www.luogu.org/problemnew/show/P3611 二分答案+优先队列 二分O(logn) 判一次正确性O(nlogn) 总体O(nlognlogn) 为了让pri ...

  7. Ubuntu 和 centos7 服务的启动

    Ubuntu 下: /etc/init.d/nginx  start | stop | reload Centos7下: service nginx start | stop | reload

  8. MVC常见框架

    Struts Struts是Apache软件基金下Jakarta项目的一部分.Struts框架的主要架构设计和开发者是Craig R.McClanahan.Struts 是Java Web MVC框架 ...

  9. Python处理PDF-通过关键词定位-截取PDF中的图表

    起因: 因为个人原因, 这些天了解了一下Python处理PDF的方法. 首先是PDF转txt, 这个方法比较多, 这里就不再赘述, 主要聊一下PDF中的图片获取. 这里用我自己的例子, 不过具体情况还 ...

  10. Idea中配置svn时报 Can't use Subversion command line client: svn.Errors found while svn working copies detection.

    https://www.cnblogs.com/wqh17/p/6881483.html