Spring-JDBC:
spring提供一致的API来简化JDBC编程-spring jdbc。我们只需要声明SQL、调用合适的Spring JDBC框架API、处理结果集。事务由Spring管理,并将JDBC受查异常转换为Spring一致的非受查异常。
Spring主要提供JDBC模板方式、关系数据库对象化方式和SimpleJdbc三种方式:
1.JDBC模板方式(JdbcTemplate):Spring JDBC框架提供以下几种模板类来简化JDBC编程,实现GoF模板设计模式,将可变部分和非可变部分分离,可变部分采用回调接口方式由用户来实现:如JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate。
2.关系数据库操作对象化方式:Spring JDBC框架提供了将关系数据库操作对象化的表示形式,从而使用户可以采用面向对象编程来完成对数据库的访问;如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类。这些类的实现一旦建立即可重用并且是线程安全的。
3.SimpleJdbc方式:Spring JDBC框架还提供了SimpleJdbc方式来简化JDBC编程,SimpleJdbcInsert 、 SimpleJdbcCall用来简化数据库表插入、存储过程或函数访问。
Spring JDBC还提供了一些强大的工具类,如DataSourceUtils来在必要的时候手工获取数据库连接等。
主要使用NamedParameterJdbcTemplate方式实现。
7.1.4 Spring的JDBC架构
四部分:datasource、support、core、object
datasource:jdbc访问数据源实现类,并封装了datasource的事务支持
support:jdbc异常转换为自己的异常。
core:jdbc模板实现类和回调接口。
objec:提供关系数据库的对象表示形式,如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类,该包是基于core包JDBC模板类实现。
--------------------------------------------------------------------------------------------------
Spring jdbc模板类JdbcTemplate:
JdbcTemplate是core包的核心类,其他模板类都是基于它封装完成的。
JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做的事情(即可变部分),并且帮我们做哪些固定部分,如连接的创建及关闭。
JdbcTemplate类对可变部分采用回调接口方式实现,如ConnectionCallback通过回调接口返回给用户一个连接,从而可以使用该连接做任何事情;StatementCallback通过回调接口返回给用户一个Statement,从而可以使用该Statement做任何事情等等
JdbcTempalte支持的回调接口:
1.预编译语句创建和存储过程语句创建接口(根据JdbcTemplate提供的连接创建相应的语句): PreparedStatementCreator(通过回调获取JdbcTemplate提供的Connection,由用户使用该Conncetion创建相关的PreparedStatement),
CollableStatementCreator(通过回调获取JdbcTemplate提供的Connection,由用户使用该Conncetion创建相关的CallableStatement)
2.预编译赋值接口(给预编译语句相应参数设值):
PreparedStatementSetter(通过回调获取JdbcTemplate提供的PreparedStatement,由用户来对相应的预编译语句相应参数设值),
BetchPreparedStatementSetter(类似于PreparedStatementSetter,但用于批处理,需要指定批处理大小)
3.用户回调接口(给用户一个扩展点,用户可以在指定类型的扩展点执行任何数量需要的操作): ConnnectionCallback(回调获取JdbcTemplate提供的Connection,用户可在该Connection执行任何数量的操作),
CallableStatementCallback(回调获取JdbcTemplate提供的CallableStatement,用户可以在该CallableStatement执行任何数量的操作),
StatementCallback(回调获取JdbcTemplate提供的Statement,用户可以在该Statement执行任何数量的操作),
PreparedStatementCallback(回调获取JdbcTemplate提供的PreparedStatement,用户可以在该PreparedStatement执行任何数量的操作)
4.结果集接口(回调处理ResultSet或将ResultSet转换为需要的形式):
RowMapper(将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型),
ResultSetExtrator(结果集数据提取,用户需实现方法extractData(ResultSet rs)来处理结果集,用户必须处理整个结果集),
RowCallbackHanlder(处理ResultSet的每一行结果,用户需实现方法processRow(ResultSet rs)来完成处理,在该回调方法中无需执行rs.next(),该操作由JdbcTemplate来执行,用户只需按行获取数据然后处理)
Spring除了提供JdbcTemplate核心类,还提供了基于JdbcTemplate实现的NamedParameterJdbcTemplate子类用于支持命名参数绑定、 SimpleJdbcTemplate类用于支持Java5+的可变参数及自动装箱拆箱
JdbcTemplate类:
1.execute():执行任何语句,ddl
2.update()/batchUpdate():增删改、批处理
3.query()/queryForInt()/...:查询
4.call():存储过程、函数
--------------------------------------------------------------------------------------------------
NamedParameterJdbcTemplate:
NamedParameterJdbcTemplate类是基于JdbcTemplate子实现类,并对它进行了封装从而支持命名参数特性,NamedParameterJdbcTemplate主要提供以下三类方法:execute方法、query及queryForXXX方法、update及batchUpdate方法。
namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource/jdbcTempalte);
String sql = " select count(1) from a where id =:id ";
map.put("id", "123");
namedParameterJdbcTemplate.query(sql, map);
1)NamedParameterJdbcTempalte初始化:可使用DataSource/JdbcTemplate实例作为构造器参数
2) :id ":id"就是命名参数
3) query(sql, map): map类型包含键为id,与命名参数一致,值即为参数值。
也可以:
SqlParamaterSource paramSource = new MapSqlParameterSource(map);
namedParameterJdbcTemplate.update(updateSql, paramSource);
5)使用封装后的paramSource参数。
(NamedParameterJdbcTemplate类为命名参数设值有两种方式:java.util.Map和SqlParameterSource)
1)java.util.Map:使用Map键数据来对于命名参数,而Map值数据用于设值;
2)SqlParameterSource:可以使用SqlParameterSource实现作为来实现为命名参数设值,默认有MapSqlParameterSource和BeanPropertySqlParameterSource实现;MapSqlParameterSource实现非常简单,只是封装了java.util.Map;而BeanPropertySqlParameterSource封装了一个JavaBean对象,通过JavaBean对象属性来决定命名参数的值。
BeanPropertySqlParameterSource使用能减少很多工作量,但命名参数必须和JavaBean属性名称相对应
--------------------------------------------------------------------------------------------------
SimpleJdbcTemplate:
基于JdbcTemplate子类,但利用Java5+的可变参数列表和自动装箱和拆箱从而获取。
SimpleJdbcTemplate主要提供两类方法:query及queryForXXX方法、update及batchUpdate方法。
SimpleJdbcTemplate simpleTem = new SimpleJdbcTemplate(DataSource/JdbcTemplate/NamedParameterJdbcTemplate);
String insSql = "insert into a(id, name) values(?, ?)";
simpleTem.update(insSql, 1, "caowei");
相关推荐
javaEE 实验三 Spring JDBC与事务管理, 一、实验目的 1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握...
Spring JDBC是Spring框架的一部分,主要用于简化Java数据库连接操作。它提供了一个抽象层,使得开发者能够以统一的方式处理各种数据库,而无需直接与JDBC API打交道,从而降低了代码的复杂性和错误率。在"Spring ...
Spring JDBC是Spring框架的一部分,它提供了一种更高级的方式来处理传统的Java JDBC(Java Database Connectivity),以简化数据库操作。本示例代码将展示如何在Spring环境中使用JDBC进行数据的增删改查操作,并对比...
《Spring JDBC:Spring框架对JDBC的封装与实践》 Spring框架是Java开发中的一个核心组件,它极大地简化了企业级应用的开发工作。在Spring框架中,Spring JDBC(Java Database Connectivity)模块扮演着重要的角色,...
Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序,而Spring JDBC则是Spring提供的用于简化数据库操作的工具。 【描述】"用spring4.0.5版本开发的,spring mvc,spring jdbc,最简单的用户登录,注册和...
Spring JDBC是Spring框架的一个核心模块,它为Java数据库连接(JDBC)提供了一个高级抽象层,简化了数据库操作。在本实例中,我们将深入探讨Spring JDBC的使用,并以`SpringJdbcTemplate`为例来阐述其主要功能和优势...
Spring框架是Java开发中广泛应用的一个开源框架,它主要由Spring Core、Spring MVC和Spring JDBC等模块组成。在本文中,我们将深入探讨这三个核心模块以及它们的功能和整合方式。 首先,Spring Core是整个Spring...
SpringMVC和SpringJDBC是Java开发中两个重要的框架,它们分别是Spring框架在Web层和数据访问层的应用。本文将详细介绍这两个组件的核心概念、工作原理以及如何整合使用,旨在帮助开发者更好地理解和应用。 **...
在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...
Spring JDBC模块是Spring框架的一部分,它提供了对JDBC(Java Database Connectivity)的高级抽象,简化了数据库操作。在这个场景中,我们关注的是Spring JDBC的5.1.3版本。 **Spring JDBC 5.1.3 版本详解** ...
在Java开发中,Spring框架是不可或缺的一部分,尤其在处理数据访问层时,Spring JDBC提供了一种强大而灵活的方式来管理数据库连接。Spring JDBC模块是Spring框架的一部分,它简化了JDBC的使用,使得开发者可以更加...
【标题】"maven-springMVC-springJDBC-Demo"是一个综合性的项目示例,它演示了如何使用Maven、Spring MVC和Spring JDBC在Java Web开发中构建一个简单的应用。这个Demo旨在帮助开发者理解这三大技术的集成与协同工作...
Spring JDBC是Spring框架中的一个核心模块,主要用于简化Java数据库编程。在本文中,我们将深入探讨Spring JDBC的应用实例,了解如何利用它来实现高效且灵活的数据访问。首先,我们需要理解Spring JDBC是如何通过...
Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得开发者可以更方便地使用Java数据库连接(JDBC)进行数据库操作。Spring JDBC的核心是JdbcTemplate类,它简化了执行SQL语句的过程,减少了代码量,并提高...
本话题主要关注Spring的两个重要模块:事务管理和Spring JDBC。这些知识点对于任何使用Spring进行后端开发的程序员来说都是至关重要的。 首先,我们来深入理解Spring事务管理。事务是数据库操作的基本单元,它确保...
Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得我们能够更方便地使用Java数据库连接(JDBC)来处理数据库操作,如增删改查(CRUD)。在这个主题下,我们将深入探讨Spring JDBC的核心概念、配置、以及...
在本项目中,我们主要探讨的是如何将Spring MVC、Spring框架和Spring JDBC这三大核心组件进行整合,构建一个完整的Java Web应用程序。这个整合Demo旨在帮助开发者理解这些技术的协同工作方式,以及如何在实际开发中...
Spring JDBC模块是Spring框架的一部分,它简化了Java Database Connectivity (JDBC)的使用,使得数据库操作更加简单且易于管理。本篇文章将深入探讨如何使用Spring JDBC在Spring 2.5版本中与MySQL数据库进行交互,...
Spring JDBC是Spring框架的一个核心模块,它为Java开发者提供了便捷的方式来操作数据库。Spring JDBC通过抽象出数据库连接管理、事务处理以及结果集处理等繁琐工作,使得开发者可以专注于SQL语句和业务逻辑,而不必...
通过这个SpringJDBC.rar的案例,初学者可以学习到如何配置DataSource,如何创建JdbcTemplate实例,以及如何编写和执行SQL语句。同时,实践中还可以了解到如何将Spring JDBC整合到Spring Boot项目中,以及如何处理...