1.Spring 对JDBC操作的支持

Spring对jdbc技术提供了很好的支持,体现在:

1.Spring对c3p0连接池的支持很完善

2.Spring对jdbc提供了jdbcTemplate,来简化jdbc操作,jdbcTemplate是模板工具类,类似于dbutils组件

使用步骤:

1.引入jar文件

  • spring-jdbc-3.2.5.RELEASE.jar
  • spring-tx-3.2.5.RELEASE.jar

2.优化

优化,我们从最开始基本的jdbc使用方法UserDao01.java开始优化,到使用spring创建对象和连接UserDao02.java,再到使用jdbcTemplate来优化UserDao02.java

其余的代码主要是一个bean对象,和配置文件,以及测试类

bean对象:Dept.java

public class Dept {

    private int deptId;
private String deptName;
public int getDeptId() {
return deptId;
}
public void setDeptId(int deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
} }

最原始的使用jdbc连接数据库:UserDao01.java

public class UserDao01 {

    /*
* 保存方法
* 需求优化的地方:
* 1. 连接管理
* 2. jdbc操作重复代码封装
*/
public void save() {
try {
String sql = "insert into t_dept(deptName) values('test');";
Connection con = null;
Statement stmt = null;
Class.forName("com.mysql.jdbc.Driver");
// 连接对象
con = DriverManager.getConnection("jdbc:mysql:///db", "root", "root");
// 执行命令对象
stmt = con.createStatement();
// 执行
stmt.execute(sql); // 关闭
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

对于这里的方法,我们可以从两方面来优化,分别是数据库的连接管理(使用xml配置)和jdbc操作重复代码封装(对象的创建使用Spring)

初步优化之后的方法:UserDao02.java

public class UserDao02 {

    // IOC容器注入
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
} public void save() {
try {
String sql = "insert into t_dept(deptName) values('test');";
Connection con = null;
Statement stmt = null;
// 连接对象
con = dataSource.getConnection();
// 执行命令对象
stmt = con.createStatement();
// 执行
stmt.execute(sql); // 关闭
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

现在的方法还是需要连接操作和执行以及关闭操作,再次优化,使用jdbcTemplate进行优化,如果要使用jdbcTemplate优化,需要先创建这个对象,这里在bean.xml中用Spring来创建

优化后的UserDao.java

public class UserDao {

    // IOC容器注入
// private DataSource dataSource;
// public void setDataSource(DataSource dataSource) {
// this.dataSource = dataSource;
// } private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} //使用jdbc模板工具类简化jdbc操作
public void save() {
String sql = "insert into t_dept(deptName) values('test');"; jdbcTemplate.update(sql);
} public Dept findById(int id) {
String sql = "select * from t_dept where deptId=?";
List<Dept> list = jdbcTemplate.query(sql,new MyResult(), id);
return (list!=null && list.size()>0) ? list.get(0) : null;
} public List<Dept> getAll() {
String sql = "select * from t_dept";
List<Dept> list = jdbcTemplate.query(sql, new MyResult());
return list;
} class MyResult implements RowMapper<Dept>{ // 如何封装一行记录
@Override
public Dept mapRow(ResultSet rs, int index) throws SQLException {
Dept dept = new Dept();
dept.setDeptId(rs.getInt("deptId"));
dept.setDeptName(rs.getString("deptName"));
return dept;
} }
}

配置文件bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 1. 数据源对象: C3P0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///db"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></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> <!-- 2. 创建JdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- dao 实例 -->
<bean id="userDao" class="h_jdbc.UserDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>

Spring 对JDBC操作的支持的更多相关文章

  1. Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理

    Unit06: Spring对JDBC的 整合支持 . Spring+JDBC Template .Spring异常处理 1. springmvc提供的异常处理机制 我们可以将异常抛给spring框架 ...

  2. spring对JDBC的整合支持

    参考网址:https://blog.csdn.net/u013821825/article/details/51606171 springMVC,目前用到的jar包 spring IOC 5个包  + ...

  3. 玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现

    1 spring-jdbc core JdbcTemplate 等相关核心接口和类(核心) datesource 数据源相关的辅助类(内嵌数据源的初始化) object 将基本的JDBC操作封装成对象 ...

  4. 使用Spring简化JDBC操作数据库

    Spring的开发初衷是为了减轻企业级开发的复杂度,其对数据库访问的支持亦如此,使用Spring访问数据库能带来以下好处: 1.1     简化代码 使用原生的JDBC访问数据库,一般总是要执行以下步 ...

  5. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Spring对jdbc的支持

    Spring对jdbc技术提供了很好的支持. 体现在: 1)Spring对c3p连接池的支持很完善: 2)Spring对jdbc提供了JdbcTemplate,来简化jdbc操作: 1.使用步骤 1) ...

  7. Spring对jdbc支持

    4. Spring对jdbc支持 spring对jdbc提供了很好的支持 体现在: 1.Spring对C3P0连接池的支持很完善 2.Spring对jdbc提供了jdbcTemplate来简化jdbc ...

  8. 1.Spring对JDBC整合支持

    1.Spring对JDBC整合支持 Spring对DAO提供哪些支持 1)Spring对DAO异常提供统一处理 2)Spring对DAO编写提供支持的抽象类 3)提高编程效率,减少DAO编码量 Spr ...

  9. 8.Spring对JDBC的支持和事务

    1.Spring对JDBC的支持 DAO : Spring中对数据访问对象(DAO)的支持旨在简化Spring与数据访问技术的操作,使JDBC.Hibernate.JPA和JDO等采用统一的方式访问 ...

随机推荐

  1. HTTPS原理,以及加密、解密的原理。

    https://blog.csdn.net/Yang_yangyang/article/details/79702583 摘要:本文用图文的形式一步步还原HTTPS的设计过程,进而深入了解原理. A在 ...

  2. SpringBoot(十二)-- 整合Redis

    1.pom依赖 <!-- 添加redis支持 --> <dependency> <groupId>org.springframework.boot</grou ...

  3. 第7章 Ajax数据爬取

    Ajax 简介 Ajax 分析方法 Ajax 结果提取

  4. 使用 urllib 分析 Robots 协议

    (1) Robots Exclusion Protocol,网络爬虫排除标准,也称爬虫协议.机器人协议,用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取(2) Robots 协议以 robots ...

  5. mybatis 之 parameterType="String" resultType="java.util.HashMap">

    public ServiceMessage<Map<String, String>> getGoodsStockNo( List<Map<String, Strin ...

  6. 剑指offer面试题7:用两个栈实现队列

    题目1:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 代码实现: public class Solution07 { Stack<Integer> ...

  7. 节日换肤通用技术方案__iOS端实现

    一.问题的提出 不知道大家有没有发现, 元旦期间, 很多APP界面里的图标都换成了具有节日气氛的样式, 而在过了元旦节之后, 这些图标又悄无声息的变回了本来的面貌. 这些具有短暂生命周期.而又必须在固 ...

  8. pg3 bypass源码阅读 —— 学习x64内核hook跳板技术

    如之前描述的 pg3复杂了许多 先来看看都要hook哪些点 1.hook dpc和定时器分发器,防止seh路线触发pg KiTimerListExpire,KiRetireDpcList 看一下hoo ...

  9. IOS多线程之序

    版权声明:原创作品,谢绝转载!否则将追究法律责任.   我们开发的应用基本上都是多线程的,几乎没有不是多线程的应用发布在appstore.首先我们的应用启动会默认有一个主线程,你一直在里面执行很多操作 ...

  10. 分布式实时日志系统(二) 环境搭建之 flume 集群搭建/flume ng资料

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...