Spring整合jdbc编程
一、Spring对Jdbc的支持
Spring为了提供对Jdbc的支持,在Jdbc API的基础上封装了一套实现,以此建立一个 JDBC 存取框架。
作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低.
二、传统的Jdbc实现
如下为传统的Jdbc实现,该实现有两个明显的缺点就是(1)需要自己管理连接 (2)Jdbc操作重复代码封装与编写
public void save() {
try {
String sql = "insert into aa(id,name) values(3,'happy');";
Connection con = null;
Statement stmt = null;
Class.forName("com.mysql.jdbc.Driver");
// 连接对象
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/kk", "root", "123456");
// 执行命令对象
stmt = con.createStatement();
// 执行
stmt.execute(sql);
// 关闭
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
三、Spring+Jdbc实现
相比于传统的Jdbc实现,在Jdbc API的基础上封装了一套实现JdbcTemplate,JdbcTemplate的优点如下:
(1)配置基于模板设置
(2)完成了资源的创建和释放的工作
(3)完成了对JDBC的核心流程的工作,包括SQL语句的创建和执行,简化了对JDBC的操作
(4)仅需要传递DataSource就可以把它实例化
(5)JdbcTemplate只需要创建一次,减少了代码复用的烦恼
(6)JdbcTemplate是线程安全类
步骤1.配置Spring+JDBC配置文件
<?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:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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
"> <!-- 1、声明数据源对象:C3P0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 加载jdbc驱动 -->
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<!-- jdbc连接地址 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/kk"></property>
<!-- 连接数据库的用户名 -->
<property name="user" value="root"></property>
<!-- 连接数据库的密码 -->
<property name="password" value="123456"></property>
<!-- 数据库的初始化连接数 -->
<property name="initialPoolSize" value="3"></property>
<!-- 数据库的最大连接数 -->
<property name="maxPoolSize" value="10"></property>
<!-- 数据库最多执行的事务 -->
<property name="maxStatements" value="100"></property>
<!-- 连接数量不够时每次的增量 -->
<property name="acquireIncrement" value="2"></property>
</bean> <!-- 创建jdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource">
</property>
</bean> <bean id="jdbcUser" class="com.jyk.spring.jdbc.JdbcUser">
<property name="jdbcTemplate" ref="jdbcTemplate">
</property>
</bean> </beans>
步骤2.通过jdbcTemplate编写对业务的增删改查操作
package com.jyk.spring.jdbc; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; public class JdbcUser { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} public void save()
{
String sql = "insert into aa(id,name) values ('4','admin4')";
//使用jdbc模板工具类来简化数据库执行前的操作
jdbcTemplate.update(sql);
} public person queryById(String id)
{
String sql = "select s.name from aa s where s.id=?";
Map<String, Object> map = jdbcTemplate.queryForMap(sql, id);
System.out.println(map);
return null;
} public List<person> queryAll()
{
String sql = "select * from aa";
return jdbcTemplate.query(sql, new RowMapper<person>(){ @Override
public person mapRow(ResultSet rs, int index) throws SQLException {
person p = new person();
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
return p;
}});
}
}
RowMapper的使用:在Jdbc的操作中,有很多情况下是要将ResultSet里的数据封装到一个持久化Bean里,再把持久化Bean封装到集合中。这样会造成大量的代码的重复,不利于代码重用。而RowMapper正好解决了这个问题。
Spring整合jdbc编程的更多相关文章
- Spring知识点总结(五)Spring整合JDBC
1. 回顾JDBC a. java操作关系型数据的API.导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库. b. 实现JDBC的六个步骤 ...
- Spring整合jdbc
首先web.xml文件跟往常一样,加载spring容器和加载org.springframework.web.context.ContextLoaderListener读取applicationCont ...
- JAVAEE——spring03:spring整合JDBC和aop事务
一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...
- Spring整合JDBC及事务处理
1.Spring整合JDBC DAO是数据访问对象(data access object)的简写.接口是实现松耦合的关键,Spring也鼓励使用接口,但不是强制的. 捕获异常时希望能尝试从异常状态中恢 ...
- Spring整合JDBC以及AOP管理事务
本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象 ...
- Spring整合JDBC实现简单的增删改
Spring整合JDBC实现简单的增删改: 1.导入Spring的包和数据库的驱动包: 2.选择一个数据源(dbcp和C3P0) 3.导入数据源的包(这里我们使用dbcp) <span styl ...
- Spring整合JDBC(连接池、JDBC模板、Dao配置到Spring容器、配置文件的优化)
1.Spring整合JDBC (1)导包(共12个): c3p0连接池.JDBC驱动(4个) Spring-jdbc.Spring-tx事务(2个) (2)JDBC模板对象(JDBCTemplate) ...
- spring整合jdbc方法一
用了一段时间的spring这,闲来没事做一下spring整合jdbc 目录文件 导入jar包 由于spring的jar包是在myeclipse中自动导入的有些暂时用不到的也没有处理. Emp类 pac ...
- Spring学习笔记(五)—— Spring整合JDBC
一.Spring对JDBC的支持 Spring提供了很多模板整合Dao技术 与JDBC的整合中,Spring中提供了一个可以操作数据库的对象——JdbcTemplate,该对象封装了JDBC技术,与D ...
随机推荐
- Scala中Stream的应用场景及其实现原理
欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-imple ...
- [JS] 页面回车键提交表单-常用于登录页面
//判断是否按下了回车键 var EnterSubmit = function(evt){ evt= window.event || evt; if (evt.keyCode == 13){ //若按 ...
- C++ 类的构造函数使用规则
//类的构造函数使用规则 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Poi ...
- 梯度下降算法到logistic回归
http://sbp810050504.blog.51cto.com/2799422/1608064/ http://blog.csdn.net/dongtingzhizi/article/detai ...
- 第二百五十节,Bootstrap项目实战--响应式导航
Bootstrap项目实战--响应式导航 学习要点: 1.响应式导航 一.响应式导航 基本导航组件+响应式 第一步,声明导航区域,设置导航默认样式,设置导航条固定在顶部navbar样式class类,写 ...
- nib文件的默认搜索规则
if you do not specify a nib name, and do not override the loadView method in your custom subclass, t ...
- Leetcode: Palindrome Partition I II
题目一, 题目二 思路 1. 第一遍做时就参考别人的, 现在又忘记了 做的时候使用的是二维动态规划, 超时加超内存 2. 只当 string 左部分是回文的时候才有可能减少 cut 3. 一维动规. ...
- ionic 弹窗(alert, confirm)
直接上代码吧,不解释了 控制器: angular.module('app.controllers', []) .controller('categoryCtrl', ['$scope', '$http ...
- Tiled地图编辑软件
Tiled官网: http://www.mapeditor.org/ 一个比较简单好用的地图编辑软件.百度可以找到很多教程. 在Egret中,官网提供了Tiled的工具类,但是教程和文档极少...只能 ...
- Angular2+ 基本知识汇总
Angular是Google推出的Web前端开发框架,从12年发布起就受到了强烈的关注,他首次提出了双向绑定的概念,让人耳目一新. Angular 2特性 就在2016年9月中旬,时隔4年,Googl ...