1. 概述

  • Spring 框架提供了很多持久层的模板类来简化编程;
  • Spring 框架提供的JDBC模板类: JdbcTemplate 类;
  • Spring 框架提供的整合 Hibernate 框架的模板类: HibernateTemplate 类

2. 环境搭建

2.1 创建数据库表结构

CREATE TABLE t_account(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
money DOUBLE
);

2.2 导入 jar 包

  • Spring 框架的基本开发包(6个);
  • Spring 的传统AOP的开发包
    • spring-aop-4.3.10.RELEASE
    • org.aopalliance-1.10.0 (在 Spring 依赖包中)
  • aspectJ 的开发包
    • org.aspectj.weave-1.6.8.RELEASE.jar (在 Spring 依赖包中)
    • spring-aspects-4.3.10.RELEASE.jar
  • JDBC 模板所需 jar 包
    • mysql-connector-java.jar: MySql 驱动包;
    • Spring-jdbc.jar;
    • Spring-tx.jar: Spring 事务包;

2.3 编写测试代码

// 第一种方式: 采用 new 对象的方式完成
@Test
public void fun(){
// 使用 Spring 内置的连接池,创建连接池
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb2");
dataSource.setUsername("root");
dataSource.setPassword("root"); // 创建模板类
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // 完成数据添加
JdbcTemplate.update("INSERT INTO t_account VALUES(null,?,?)","张三",1000);
} // 第二种方式: 采用 IOC 的方式
// applicationContext.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/mydb2"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</beaen> <!-- 配置 JDBC 的模板类 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> // 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo2{ @Resource(name="jdbcTemplate")
private JdbcTemplate jdbcTemplate; @Test
public void fun(){
// update(String sql, Object...params); 可以完成增删改操作
jdbcTemplate.update("INSERT INTO t_account VALUES(null,?,?)","张三",1000);
} @Test
public void fun2(){
// 查询
// 第一种方式: 通过主键查询一条记录
// queryForObject(String sql, RowMapper<T> rowMapper, Object... params) Account ac = jdbcTemplate.queryForObject("SELECT * FROM t_account WHERE id=?",
new BeanMapper(),1);
} @Test
public void fun3(){
// 查询
// 第二种方式: 查询所有
// query(String sql, RowMapper<T> rowMapper, Object... params) List<Account> ac = jdbcTemplate.query("SELECT * FROM t_account",new BeanMapper());
}
} // 自己手动的来封装数据(一行一行的封装)
public class BeanMapper implements RowMapper<Account>{ public Account mapRow(ResultSet rs, int rowNum) throws SQLException{
Account ac = new Account();
ac.setId(rs.getInt("id"));
ac.setName(rs.getString("name"));
ac.setMoney(rs.getDouble("money"));
return ac;
}
} // javaBean 用于封装查询到的结果
public class Account{
private Integer id;
private String name;
private Double money; get 和 set 方法...
}

3. Spring 框架管理开源的连接池

3.1 管理 DBCP 连接池

  1. 引入 DBCP 的 jar 包

    • org.apache.commong.dbcp-1.2.2.osgi.jar
    • org.apache.commons.pool-1.5.3.jar
  2. 编写配置文件
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb2"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>

3.2 管理 C3P0 连接池

  1. 引入 c3p0 的 jar包

    • com.mchange.v2.c3p0-0.9.1.2.jar
  2. 编写配置文件
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb2"/>
<property name="user" value="root"/>
<property namem="password" value="root"/>
</bean>

参考资料

Spring 框架的JDBC模板技术的更多相关文章

  1. Spring框架的JDBC模板技术和事物

    Spring框架的JDBC模板技术         技术分析之Spring框架的JDBC模板技术概述  1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单     ...

  2. Spring框架的JDBC模板技术概述

    1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2. 提供了JDBC模板,Spring框架提供的 * JdbcTemplate类 3. Spring框架可以整 ...

  3. 演示Spring框架的JDBC模板的简单操作

    1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...

  4. spring框架总结(04)----介绍的是Spring中的JDBC模板

    1.1  Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...

  5. 解析Spring第四天(Spring中的事物、Spring框架来管理模板类)

    JDBC模板技术: Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 template 模板 都是Spring框架提供XxxTemplate 提供了JDBC模板,Sp ...

  6. Spring框架之jdbc源码完全解析

    Spring框架之jdbc源码完全解析 Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现: 1.指定数据库连接参数 2.打开数据库连接 3.声明SQL语句 4.预编译并执行SQL语句 ...

  7. Spring中的JDBC模板类入门

    1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...

  8. 使用Spring框架来管理模板类

    1. 刚才编写的代码使用的是new的方式,应该把这些类交给Spring框架来管理. 2. 修改的步骤如下 applicationContext.xml中<beans>标签的开头配置为: * ...

  9. spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)

    Spring提供的JDBC框架负责管理资源和异常处理,从而可以简化开发者的JDBC代码.开发者只需要编写写入和读取数据库相关的代码即可. 正如在之前的小节中论述过的,Spring将数据库访问过程中的模 ...

随机推荐

  1. Atitit.判断元素是否显示隐藏在父元素 overflow

    Atitit.判断元素是否显示隐藏在父元素 overflow 1.1. scrollTop  指的是元素的滚动条顶端距离原生基线的高度...1 1.2. 判断元素是否显示隐藏在父元素  $(next) ...

  2. 李洪强iOS经典面试题30-一个区分度很大的面试题

    李洪强iOS经典面试题30-一个区分度很大的面试题 考察一个面试者基础咋样,基本上问一个 @property 就够了: @property 后面可以有哪些修饰符? 线程安全的: atomic,nona ...

  3. What is Web Application Architecture? How It Works, Trends, Best Practices and More

    At Stackify, we understand the amount of effort that goes into creating great applications. That’s w ...

  4. 批量上传文件到HDFS的Shell脚本

    在做Hadoop数据挖掘项目的时候,我们第一步是源数据的获取,即把相应的数据放置到HDFS中,以便Hadoop进行计算,手动将文件上传到HDFS中,未免太费时费力,所以我们可以采取像Flume一样的框 ...

  5. display:flex和display:box布局浏览器兼容性分析

    display:flex和display:box都可用于弹性布局,不同的是display:box是2009年的命名,已经过时,用的时候需要加上前缀:display:flex是2012年之后的命名.在实 ...

  6. android 学习之rxjava

    最近在做的一个项目,所用到的技术和rxjava有关,因此还特地的学习了下,在这简单的介绍下rxjava: RxJava是什么 RxJava 在 GitHub 主页上的自我介绍是 "a lib ...

  7. 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.

    UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATA ...

  8. mean 快速开发和现有技术的对比分析

    最近无聊的时候,网上看了下全栈开发的相关资料,发现了mean这个好玩的东西.可能我是一个比较传统的开发,接触.net 已经将近快8年了,一直在传统的后端多层架构的模式下开发,一时对这个新的东西就喜欢研 ...

  9. 第二百四十节,Bootstrap巨幕页头缩略图和警告框组件

    Bootstrap巨幕页头缩略图和警告框组件 学习要点: 1.巨幕组件 2.页头组件 3.缩略图组件 4.警告框组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:巨幕组件.页头组件.缩 ...

  10. jsp有哪些内置对象?作用分别是什么?(至少三个)

    jsp有哪些内置对象?作用分别是什么?(至少三个) 解答: 1)request表示HttpServletRequest对象.它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, head ...